我有一个带有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模型并仔细检查了它们之间的所有反向关系,但它并没有帮助我摆脱它。
此应用程序运行正常,但我找不到任何解决方案来删除此警告。
答案 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 ......