我经常在我的iPhone Objective-C单元测试中发现我想要一个类方法,例如NSUrlConnection的+ sendSynchronousRequest:returningResponse:error:方法.
简化示例:
- (void)testClassMock
{
id mock = [OCMockObject mockForClass:[NSURLConnection class]];
[[[mock stub] andReturn:nil] sendSynchronousRequest:nil returningResponse:nil error:nil];
}
Run Code Online (Sandbox Code Playgroud)
运行时,我得到:
Test Case '-[WorklistTest testClassMock]' started.
Unknown.m:0: error: -[WorklistTest testClassMock] : *** -[NSProxy doesNotRecognizeSelector:sendSynchronousRequest:returningResponse:error:] called!
Test Case '-[WorklistTest testClassMock]' failed (0.000 seconds).
Run Code Online (Sandbox Code Playgroud)
我很难找到关于此的任何文档,但我认为OCMock不支持类方法.
经过很多谷歌搜索,我发现了这个提示.它有效,但非常麻烦:http: //thom.org.uk/2009/05/09/mocking-class-methods-in-objective-c/
无论如何在OCMock中这样做?或者有人会想到一个聪明的OCMock类别对象可以编写来完成这种事情吗?
我喜欢在Xcode 4中使用Assistant Editor.我经常选择Option-Click文件在Assistant Editor中打开它们,或者使用Open Quickly(Command-Shift-O),并在选择文件时按住选项键以在助理编辑.
这两个操作都会将Assistant Editor切换到Manual模式.是否有键盘快捷键将助理编辑器切换回跟踪模式(也称为自动)?在跟踪模式下,它会自动显示对应项,例如主编辑器中文件的相应标题/实现文件.知道我可以在助理编辑器跳转栏上用鼠标选择自动模式,但我真的想要一个键盘快捷键来做到这一点.
在我的 SwiftUI 应用程序中,我将一些示例模型对象放在 Xcode 的“预览内容”文件夹中。我只在我的 SwiftUI 中访问它们PreviewProvider。我的理解是这个文件夹中的代码/资产仅用于在Canvas中进行预览。我的预览工作正常。我正在使用 Xcode 11.6 (11E708)。
但是,当我去存档我的应用程序时,它失败了,因为它找不到这些示例模型对象。我的印象PreviewProvider是,从 Xcode 11 开始,代码并未构建到最终二进制文件中。请参阅Xcode 11 发行说明中的此问题和此屏幕截图。
(奇怪的是,我能够使用 Release 配置进行编译。只是 Archive 失败了。)
作为一种解决方法,我可以将#if DEBUG/#endif包装器放在我PreviewProvider的周围,但上面的屏幕截图表明这不是必需的。
我是否误解了“预览内容”文件夹的工作原理?
这个问题似乎很简单,但我已经尝试了我能想到的一切,并用Google搜索了几个小时.
我有一个自动完成的NSSearchField,基本上复制了Apple的SearchField示例代码.我在IB中关闭了"发送整个搜索字符串",因为我不想在用户完成文本输入之前进行搜索,并且不想进行多次搜索(它们很昂贵).
当用户在字段中键入时,当他们按Enter键,指定他们接受当前的自动完成时,我希望触发NSSearchField的操作.相反,它似乎只是填写自动完成,然后用户必须再次按下输入才能触发操作.基本上,考虑开始在Safari中输入URL,它会自动填充,然后按Enter键开始加载页面(触发操作).他们不需要再次按回车键开始加载页面.
我尝试过的事情没有成功:
有任何想法吗?谢谢!
在我的 SwiftUI 应用程序中,我希望在TextEditor失去焦点/完成编辑时收到通知。理想情况下,类似 的TextField回调onCommit将是完美的。
使用下面的 newonChange确实可以接收用户输入的每个新字符,但我真的想知道它们何时完成。
@State var notes = ""
...
TextEditor(text: $notes)
.onChange(of: notes, perform: { newString in
print(newString)
})
Run Code Online (Sandbox Code Playgroud) objective-c ×2
swift ×2
swiftui ×2
xcode ×2
autocomplete ×1
cocoa ×1
cocoa-touch ×1
ios ×1
ios14 ×1
iphone ×1
nstextfield ×1
ocmock ×1
xcode4 ×1