当我在Interface Builder中选择NSTreeController
(在Xcode 4.6.3中)并查看属性检查器时,我看到两个名为Tree Controller和Object Controller的部分。树控制器部分有一定意义,但我找不到对象控制器部分的解释。第一项是"模式",有选项" Class"和"实体名称",我认为你在使用核心数据时使用后者,而在没有时使用前者。我没有使用核心数据。那么,下一个项目Class Name的含义是什么?它默认为NSMutableDictionary
,但我认为标准树节点类型为NSTreeNode
。具体来说,如果我希望我的树节点是NSTreeNode
,其表示的对象是NSMutableDictionary
,我将如何填写对象控制器部分?
事后回答:尽管我现在看到可以使用NSMutableDictionary
类型的节点来构建大纲视图的内容树,但创建NSTreeNode
的子类是有好处的。首先,NSTreeNode
会自动跟踪父链接,这在某些情况下很有用。其次,我可以将我的数据成员定义为属性,然后使用点表示法而不是objectForKey:
消息来访问它们。
答案 0 :(得分:2)
对象控制器面板只是 Interface Builder的方式,允许您设置entityName
的{{1}}属性或{{1}属性。 (NSTreeContoller
是objectClass
的子类,这是定义这些属性的地方。)
NSTreeController
是Cocoa在将对象(或实体)放入树之前用它来包装的类。你在这个过程中没有发言权,它会自动发生,因此与属性检查器无关。你自己很少(从不?)需要自己创建一个NSObjectController
实例 - 尽管你会经常与他们互动。
所以看起来你实际上并不需要在这个面板上做任何事情 - 默认值就是你所追求的。当然,您仍需要填写关键路径部分。
Here's a very simple demo project(使用Xcode 6.3创建)。希望这会有所帮助。