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

时间:2015-04-09 10:43:24

标签: ios xcode swift core-data

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

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

在:

class BasicFetchedResultControllerDelegate : NSFetchedResultsControllerDelegate

后:

class BasicFetchedResultControllerDelegate : NSObject, NSFetchedResultsControllerDelegate

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

2 个答案:

答案 0 :(得分: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-SW3的Xcode 6.3发行说明中有所描述。

答案 1 :(得分:0)

核心数据类仍然表现得像传统的Objective-C类。由于NSFetchedResultsController是没有任何超类的@protocol,因此Swift需要明确的NSObject声明。

你是对的,在更改日志中没有任何相关内容。