获取结果控制器委托在swift 1.2/xcode 6.3更新后未调用

val*_*alR 8 xcode core-data ios swift

我刚刚将我的项目升级到swift 1.2.经过5或6连续'转换到最新的Swift'动作:),我能够让它编译.然后我的很多UI测试都失败了.这是因为我的'NSFetchedResultsControllerDelegate'不再被调用.

在(我可能会说)一次非常幸运的尝试后,我发现这是因为我的代表不是NSObject.所以我能够通过继承NSObject或添加@obj来修复它.

之前:

class BasicFetchedResultControllerDelegate : NSFetchedResultsControllerDelegate
Run Code Online (Sandbox Code Playgroud)

后:

class BasicFetchedResultControllerDelegate : NSObject, NSFetchedResultsControllerDelegate
Run Code Online (Sandbox Code Playgroud)

我不认为我在更改日志中看到了与此相关的内容.导致这种情况的变化是什么?您是否注意到其他类似的变化?

val*_*alR 7

在我填写错误报告后,我从Apple收到了这个:

此问题的行为基于以下内容:

这是Swift 1.2中的行为更改:非Objective-C派生类中的方法将不再被隐式标记为@objc,即使它们与Objective-C协议匹配也是如此.如果您不想扩展NSObject,可以使用@objc属性显式标记方法.这在https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc6_release_notes.html#//apple_ref/doc/uid/TP40001051-CH4-的Xcode 6.3发行说明中有所描述.SW3.