4

我有一个非常简单的设置在这里,Xcode给了我一个无评论的红色“!”在界面构建器中标记。如何将NSTextField的值无错地绑定到NSObjectController的内容?

从基于核心数据的文档模板开始。文档xib有一个NSObjectController实例,其管理对象上下文绑定到文件的所有者(我的NSPersistentDocument子类)。一个NSTextField存在,其值我想要绑定到NSObjectController ...这是问题出在哪里。

我键入“模型关键路径”的“标题”,因为这是我的正确属性NSManagedObject,它应该出现在文本字段中。当我点击进入空控制器关键领域,自动完成奇怪表明,仅用于NSArrayController的领域:

screenshot of strange autocomplete candidates

任何时候,我尝试键入“内容”的控制键(因为这是正确的属性的NSObjectController),然后按一下Tab键/返回/不管,“内容”下移示范关键路径,像这样:

screenshot of error

这是什么红色的感叹号?当我将“Controller Key”空白并将“Model Key Path”作为content.title时,该应用可以正常工作。绑定是正确的,并反映了我的NSManagedObject的“title”属性。我绝对相信“对象控制器”是NSObjectController的一个实例。

+0

为了确保这里有足够的信息:NSObjectController处于实体模式,设置为具有名为“title”的String属性的Core Data实体。 – Khakionion

回答

7

使用“选择”。对于NSObjectController,选择是内容对象。

+0

所以......这有效,但为什么?这没有记录在我能找到的任何地方,并且完全违反直觉。没有“选择”,因为它只是一个单一的对象,对吧? – Khakionion

+0

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaBindings/Concepts/CntrlSelection.html#//apple_ref/doc/uid/TP40002146-BCICADHC – Khakionion

+0

上述文档提到了单句。看起来似乎与直觉相反,但至少在苹果的所有文档中都提到了它。 – Khakionion

相关问题