将实体绑定为NSTreeController的子节点的正确方法

时间:2011-02-22 18:11:27

标签: objective-c xcode macos binding nstreecontroller

我是否理解如何使用NSOutlineview填充NSTreeController,并NSTreeController与两个单独的实体绑定,这两个实体之间存在关联:

我的appDelegate有一个与我的Object Controller绑定的managedObjectContext。我的NSOutlineViews是一个名为 clients 的实体。我的tableColumn NSTreeController绑定到key path(以及客户NSOutlineView clientCompany ,这会填充我的NSTreeController 1}}正确使用公司名称列表。

我的第二个实体项目有一个名为 projectParent 的关系属性,该属性反向绑定到名为 clientChild 的客户端中的属性。通过这种关系,我希望children的孩子能够由相关的项目条目组成,这些条目具有相关的 clientCompany 作为父级。

为了尝试这一点,我在我的key path中将 clientChild 设为NSTreeController content set,然后将同一控制器的key path绑定到我的客户实体的 clientChild Controller Key,其中content set为“已选中”。

此方法和各种组合似乎不起作用并产生不同的错误。只有当我遗漏了最后一个'{{1}}'绑定步骤,程序在启动时运行时没有错误,并且在outlineview条目旁边有打开/关闭图标,表明它填充了我想要的。在尝试打开其中一个条目时,会产生错误,表明我的项目实体与我的 clientChild 属性不符合KVC。我已经遍历了绑定,似乎无法找到问题。

1 个答案:

答案 0 :(得分:1)

经过一周多的阅读和研究,我相信答案是这是不可能的。这让我感到很惊讶 - 考虑到Interface Builder和NSTreeController提供的所有时间保护程序快捷方式,我认为我的情况很常见,这可以在Interface Builder或内置类中实现。

我不是在创建我自己的课程来做我想做的事情,希望这个答案对于那些正在搜索这个并且找不到很多答案的人来说很有用(谷歌用得不多)。< / p>