NSManageObjectContext - 对于密钥@count

时间:2016-09-15 13:14:25

标签: ios core-data 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";

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

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

然后我发现了Apple documentation

  

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我认为这已在PR 2449中修复,已合并到development branch。 PR包含this commit接缝以解决问题。

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

pod 'RestKit', :git => 'https://github.com/RestKit/RestKit.git', :commit => '9cbba9eb1b490c3c5e2873c8fba8e9c0fec1bf07'

建议here它应该有效!

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