小编Jer*_*emy的帖子

如何在OCMock中存根一个类方法?

我经常在我的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类别对象可以编写来完成这种事情吗?

iphone cocoa-touch objective-c ocmock

36
推荐指数
3
解决办法
2万
查看次数

Xcode 4:用于将Assistant Editor切换到Tracking(自动)模式的键盘快捷键?

我喜欢在Xcode 4中使用Assistant Editor.我经常选择Option-Click文件在Assistant Editor中打开它们,或者使用Open Quickly(Command-Shift-O),并在选择文件时按住选项键以在助理编辑.

这两个操作都会将Assistant Editor切换到Manual模式.是否有键盘快捷键将助理编辑器切换回跟踪模式(也称为自动)?在跟踪模式下,它会自动显示对应项,例如主编辑器中文件的相应标题/实现文件.知道我可以在助理编辑器跳转栏上用鼠标选择自动模式,但我真的想要一个键盘快捷键来做到这一点.

xcode xcode4

27
推荐指数
2
解决办法
1万
查看次数

如果预览内容文件夹中有 SwiftUI 预览的代码,为什么存档会失败?

在我的 SwiftUI 应用程序中,我将一些示例模型对象放在 Xcode 的“预览内容”文件夹中。我只在我的 SwiftUI 中访问它们PreviewProvider。我的理解是这个文件夹中的代码/资产仅用于在Canvas中进行预览。我的预览工作正常。我正在使用 Xcode 11.6 (11E708)。

但是,当我去存档我的应​​用程序时,它失败了,因为它找不到这些示例模型对象。我的印象PreviewProvider是,从 Xcode 11 开始,代码并未构建到最终二进制文件中。请参阅Xcode 11 发行说明中的此问题此屏幕截图

(奇怪的是,我能够使用 Release 配置进行编译。只是 Archive 失败了。)

作为一种解决方法,我可以将#if DEBUG/#endif包装器放在我PreviewProvider的周围,但上面的屏幕截图表明这不是必需的。

我是否误解了“预览内容”文件夹的工作原理?

xcode swift swiftui

27
推荐指数
1
解决办法
492
查看次数

如何让NSSearchField在自动完成时发送动作?

这个问题似乎很简单,但我已经尝试了我能想到的一切,并用Google搜索了几个小时.

我有一个自动完成的NSSearchField,基本上复制了Apple的SearchField示例代码.我在IB中关闭了"发送整个搜索字符串",因为我不想在用户完成文本输入之前进行搜索,并且不想进行多次搜索(它们很昂贵).

当用户在字段中键入时,当他们按Enter键,指定他们接受当前的自动完成时,我希望触发NSSearchField的操作.相反,它似乎只是填写自动完成,然后用户必须再次按下输入才能触发操作.基本上,考虑开始在Safari中输入URL,它会自动填充,然后按Enter键开始加载页面(触发操作).他们不需要再次按回车键开始加载页面.

我尝试过的事情没有成功:

  • control:textView:commandSelector:,查找insertNewline:.当他们按Enter键完成自动完成时,它不会被触发
  • 覆盖controlTextDidEndEditing:与上述相同

有任何想法吗?谢谢!

cocoa autocomplete objective-c nstextfield nssearchfield

7
推荐指数
1
解决办法
2925
查看次数

当文本编辑器失去焦点时如何收到通知?

在我的 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)

ios swift swiftui ios14

2
推荐指数
2
解决办法
3732
查看次数