0

当我NSTreeController在 Interface Builder 中选择一个(在 Xcode 4.6.3 中)并查看属性检查器时,我看到名为 Tree Controller 和 Object Controller 的两个部分。树控制器部分有一定的意义,但我很难找到对象控制器部分的解释。第一项是“模式”,带有选项“类”和“实体名称”,我认为您在使用 Core Data 时使用后者,而在不使用时使用前者。我没有使用核心数据。那么,下一项 Class Name 的含义是什么?它默认为NSMutableDictionary,但我认为标准的树节点类型是NSTreeNode。具体来说,如果我希望我的树节点是一个NSTreeNode其表示的对象是一个NSMutableDictionary,我将如何填写对象控制器部分?


回答后事后思考:虽然我现在看到可以使用类型的节点NSMutableDictionary来构建大纲视图的内容树,但创建NSTreeNode. 首先,NSTreeNode自动跟踪父链接,这在某些情况下很有用。其次,我可以将我的数据成员定义为属性,然后使用点符号而不是objectForKey:消息来访问它们。

4

1 回答 1

2

Object Controller面板只是Interface Builder允许您设置的属性entityNameNSTreeContoller属性的方式objectClass。(NSTreeController是 的子类NSObjectController,这些属性是在其中定义的。)

NSTreeNode是 Cocoa 使用的一个类,用于在将对象(或实体)放入树中之前对其进行包装。你在这个过程中没有发言权,它是自动发生的,因此与Attributes Inspector无关。更重要的是,您很少(从不?)需要自己创建一个NSTreeNode实例——尽管您会经常与它们交互。

所以看起来你实际上不需要在这个面板中做任何事情——默认值就是你所追求的。当然,您仍然需要填写Key Paths部分。

这是一个非常简单的演示项目(使用 Xcode 6.3 创建)。希望这会有所帮助。

于 2015-04-14T19:39:32.067 回答