当我在Interface Builder(在Xcode 4.6.3中)中选择一个NSTreeController
并查看属性检查器时,我看到名为“树控制器”和“对象控制器”的两个部分。树控制器部分很有道理,但我在查找“对象控制器”部分的说明时遇到了麻烦。第一项是“模式”,具有选项“类”和“实体名称”,我认为您在使用Core Data时使用后者,而在不使用Core Data时使用前者。我没有使用Core Data。那么,下一项,类名是什么意思?它默认为NSMutableDictionary
,但我认为标准树节点类型为NSTreeNode
。具体来说,如果我希望树节点是一个NSTreeNode
,其表示的对象是一个NSMutableDictionary
,我该如何填写“对象控制器”部分?
答案后的思考:尽管我现在看到可以使用类型为NSMutableDictionary
的节点来为大纲视图构建内容树,但是制作NSTreeNode
的子类还是有优势的。首先,NSTreeNode
自动跟踪父链接,这在某些情况下很有用。其次,我可以将数据成员定义为属性,然后使用点表示法而不是objectForKey:
消息来访问它们。
最佳答案
对象控制器面板只是Interface Builder的一种方式,允许您设置entityName
的NSTreeContoller
属性或objectClass
属性。 (NSTreeController
是NSObjectController
的子类,在这里定义了这些属性。)NSTreeNode
是Cocoa使用的类,用于在将对象(或实体)放入树中之前包装它们。您在此过程中没有发言权,它会自动发生,因此与Attributes Inspector无关。而且,您很少(永远不需要)自己创建一个NSTreeNode
实例-尽管您会定期与其互动。
因此,您似乎实际上不需要在此面板中执行任何操作-默认值就是您要使用的值。当然,您仍然需要填写“关键路径”部分。
Here's a very simple demo project(使用Xcode 6.3创建)。希望这会有所帮助。
关于xcode - 如何在Interface Builder中配置NSTreeController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29633479/