我有一个核心数据模型,支持1→多个关系(1个文件夹到多个短语)。目前,我只是使用核心数据绑定将{Phrases}显示在NSTableView
上,以便将所有内容粘合在一起 - 这很有效。
我尝试使用NSArrayController
来尝试获得相同的结果,但也显示了文件夹。我已经尝试过类似的绑定结构,我已经在NSOutlineView
使用过,但我没有取得任何进展。我应该采取哪些步骤,从NSTableView
平面移动到NSTableView
并进行深度调整?
这是我的妈妈:
顶级文件夹,底层短语。没有筑巢。我不是动物。
NSTreeController
NSOutlineView
NSTreeController
数组控制器绑定了arrangedObjects
Controller Content
的模式(这感觉不对)Folder
设置为子键路径NSOutlineView
短语NSManagedObject
当我这样做时,我得到了这个结果:
[APPNAME.Folder copyWithZone:]:
tutorial that got me this far有嵌套对象,只有一种实体,我有两个。我需要在phrases
?
答案 0 :(得分:0)
NSTreeController
和NSOutlineView
与NSTableView
和NSArrayController
的工作方式相同。要使用NSTreeController
,您不需要NSArrayController
,您可以将树控件设置为实体模式。
我的实体不称为表视图单元
删除列绑定,它用于基于单元格的ouline视图。将大纲视图的内容绑定到树控制器,并将表视图单元格中的文本字段绑定到表格单元视图。
让我这么远的教程有嵌套对象和只有一种类型的实体,其中我有两个。
这是一个问题,因为NSTreeController
只有一个childrenKeyPath
,大纲视图中的文本字段只能与一个键绑定。据我所知,有两种解决方法。
解决方案1:创建NSTreeController
的子类并覆盖
- (NSString *)childrenKeyPathForNode:(NSTreeNode *)node
托管对象为node.representedObject
。
实现委托方法outlineView:viewForTableColumn:item:
并为每个实体使用不同的视图。
解决方案2:创建NSManagedObject
子类并实现子项的计算属性并显示,以便所有实体都回答相同的键。
我认为这个解决方案感觉不对,托管对象不应该包含视图代码,但是如果你已经有NSManagedObject
个子类,那么它很容易实现。