当我在Interface Builder(在Xcode 4.6.3中)中选择一个NSTreeController并查看属性检查器时,我看到名为“树控制器”和“对象控制器”的两个部分。树控制器部分很有道理,但我在查找“对象控制器”部分的说明时遇到了麻烦。第一项是“模式”,具有选项“类”和“实体名称”,我认为您在使用Core Data时使用后者,而在不使用Core Data时使用前者。我没有使用Core Data。那么,下一项,类名是什么意思?它默认为NSMutableDictionary,但我认为标准树节点类型为NSTreeNode。具体来说,如果我希望树节点是一个NSTreeNode,其表示的对象是一个NSMutableDictionary,我该如何填写“对象控制器”部分?



答案后的思考:尽管我现在看到可以使用类型为NSMutableDictionary的节点来为大纲视图构建内容树,但是制作NSTreeNode的子类还是有优势的。首先,NSTreeNode自动跟踪父链接,这在某些情况下很有用。其次,我可以将数据成员定义为属性,然后使用点表示法而不是objectForKey:消息来访问它们。

最佳答案

对象控制器面板只是Interface Builder的一种方式,允许您设置entityNameNSTreeContoller属性或objectClass属性。 (NSTreeControllerNSObjectController的子类,在这里定义了这些属性。)

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/

10-10 09:25