绑定和核心数据:实体 xxx 不符合键“(null)”的键值编码

Posted

技术标签:

【中文标题】绑定和核心数据:实体 xxx 不符合键“(null)”的键值编码【英文标题】:Bindings and Core Data: the entity xxx is not key value coding-compliant for the key "(null)" 【发布时间】:2016-07-05 13:27:10 【问题描述】:

我构建了一个小应用程序来了解 macOS 编程。我有几个表格视图,其中一些有NSPopUpButtonCell

那些NSPopUpButtonCells 随机导致崩溃

2016-07-05 14:45:10.331 TrainingplanMac[94732:35004946] [<TrainingplanMac.Workout 0x6180000a6de0> valueForUndefinedKey:]: the entity Workout is not key value coding-compliant for the key "(null)".
2016-07-05 14:45:10.334 TrainingplanMac[94732:35004946] (
0   CoreFoundation                      0x00007fffa050b4f2 __exceptionPreprocess + 178
1   libobjc.A.dylib                     0x00007fff9a51973c objc_exception_throw + 48
2   CoreFoundation                      0x00007fffa050b439 -[NSException raise] + 9
3   CoreData                            0x00007fff9ebddd91 -[NSManagedObject valueForUndefinedKey:] + 289
4   AppKit                              0x00007fff98d14ed5 -[_NSPopUpButtonPlugin showValue:inObject:] + 734

如果我触摸了情节提要,错误会随机发生。如果我不触摸情节提要,我可以根据自己的喜好经常重建项目,而不会出现错误。如果出现错误,我会在情节提要中摆弄一些设置,经过几次重建后它就消失了。此外,并非每次都是同一个实体导致错误。每个NSPopupButtonCell 都有一个它显示的其他实体,并且每个按钮/实体都会随机发生错误。

这很令人沮丧,因为每次我想尝试新的东西时,我都必须构建/运行/fiddle/build/run/fiddle...直到应用程序运行为止。

不知道还有哪些其他信息可能会有所帮助。由于没有足够的声誉,我无法嵌入图片。很抱歉。

[编辑]

我在一个小项目中从头开始重现了这个问题。我在此处提供了该项目:[项目已删除,因为不再需要它]。我想我已经按照 Apple 的 Binding Guide 做了所有事情,但是...... :)

由于“只有 2 个链接限制”,删除了图片链接。

【问题讨论】:

您的单元格绑定图像似乎与表格绑定图像相同。 他们不是。这非常具有误导性 - 我必须检查两次才能确定 :) 我认为如果我能够嵌入它们会更清楚 - 抱歉。 啊,是的。我想你可能需要澄清你所说的“细胞”是什么意思。不是通过 objectValue 绑定表格单元格,而是单元格内的弹出绑定? 澄清了这一点。至少我希望我做到了:) 如果表格视图是基于单元格的,则不必绑定内容、选择索引和排序描述符。 【参考方案1】:

如果表格视图是基于单元格的,则不必绑定内容、选择索引和排序描述符。

来自 NSTableView Bindings 的文档:

通常,在进行初始 NSTableColumn 绑定时会自动创建内容绑定,绑定到列的 NSArrayController。

【讨论】:

以上是关于绑定和核心数据:实体 xxx 不符合键“(null)”的键值编码的主要内容,如果未能解决你的问题,请参考以下文章

Restkit - 实体(空)不符合键“行”的键值编码

Core Data 此类不符合键名的键值编码

CoreData 严重应用程序错误:实体不符合键值编码

为符合协议的对象使用核心数据

即使在重新启动我的开发 Mac 之后,实体仍然不符合键的键值编码

核心数据:没有为实体 ZZZZ 上的属性 YYYY 找到类名为 XXX 的 NSValueTransformer