NSManageObjectContext - 类不是键@count的键值编码兼容

Ben*_*Ben 9 core-data ios restkit xcode8

我有一个带有RestKit库和CoreData的iOS应用程序.从Xcode8开始,我可以看到比以前更多的日志,其中一个对我没有任何意义.

error: An observer of NSManagedObjectContextDidSaveNotification illegally threw an exception.  Objects saved = {
inserted = "{(\n)}";
managedObjectContext = "<_PFWeakReference: 0x600000621560>";
updated = "{(\n ... )}";
} 
and exception = [<_PFWeakReference 0x600000621560> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count. with userInfo = {
NSTargetObjectUserInfoKey = "<_PFWeakReference: 0x600000621560>";
NSUnknownUserInfoKey = "@count";
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能理解的是对managedObjectContext的弱引用(错误上面的内容)使用了错误的键,但我无法弄清楚如何调试它.

与此问题相关的所有NSManagedObjects似乎都是集合.主要来自OneToMany或ManyToMany关系的NSSet.

然后我发现了这个Apple文档:

除@count外,所有集合运算符都需要集合运算符右侧的键路径.

但是,我看不到当前使用此密钥的任何谓词或CoreData请求.

我重新生成了所有的NSManagedObject模型,并仔细检查它们之间的所有反向关系,但它没有帮助我摆脱它.

这个应用程序运行正常,但我找不到任何解决方案来删除此警告.

Saj*_*jon 1

我相信这已在PR 2449中修复,并已合并到development branch. 该 PR 包含此提交,旨在解决该问题。

我不确定 PR 是否已合并到master分支中,因此不确定它是否可以通过 pod 获得。但是您可以在 podfile 中指定特定的提交,而不是版本。所以如果你指定这个:

pod 'RestKit', :git => 'https://github.com/RestKit/RestKit.git', :commit => '9cbba9eb1b490c3c5e2873c8fba8e9c0fec1bf07'
Run Code Online (Sandbox Code Playgroud)

按照这里的建议,它应该可以工作!

但也许该提交与Swift 3不兼容,我对此不确定。但也许你没有使用 Swift 3...