【问题标题】:NSManageObjectContext - Class is not key value coding-compliant for the key @countNSManageObjectContext - 类与键 @count 的键值编码不兼容
【发布时间】:2017-01-23 12:46:33
【问题描述】:

我有一个带有 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 模型并仔细检查了它们之间的所有反向关系,但这并没有帮助我摆脱它。

此应用运行良好,但我找不到任何解决方案来消除此警告。

【问题讨论】:

  • 我猜这不是你做的关键,而是 RKManagedObjectStore.m 第 55 行。
  • 你有没有找到摆脱这个警告的方法?

标签: ios core-data restkit xcode8


【解决方案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...

【讨论】:

    猜你喜欢
    • 2013-10-11
    • 2013-05-23
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2011-03-17
    • 2012-09-24
    相关资源
    最近更新 更多