NSOutlineView和核心数据1→许多关系

时间:2016-03-14 16:37:07

标签: swift nstableview cocoa-bindings nsoutlineview nsarraycontroller

我有一个核心数据模型,支持1→多个关系(1个文件夹到多个短语)。目前,我只是使用核心数据绑定将{Phrases}显示在NSTableView上,以便将所有内容粘合在一起 - 这很有效。

我尝试使用NSArrayController来尝试获得相同的结果,但也显示了文件夹。我已经尝试过类似的绑定结构,我已经在NSOutlineView使用过,但我没有取得任何进展。我应该采取哪些步骤,从NSTableView平面移动到NSTableView并进行深度调整?

这是我的妈妈: managed object model. We spell mother 'mum' in New Zealand, so not as funny as it could have been.

顶级文件夹,底层短语。没有筑巢。我不是动物。

NSTreeController

  • NSOutlineView
  • 上的NSTreeController数组控制器绑定了arrangedObjects
  • 设置为'实体名称'实体名称为Controller Content的模式(这感觉不对)
  • Folder设置为子键路径
  • 准备内容为真
  • 它的mOC设置为有效的mOC

NSOutlineView

  • 大纲视图内容绑定到树控制器,使用arrangeObjects作为Key,字符串作为Key Path

短语NSManagedObject

  • 有一个名为'短语'这会返回一个空集,因为它永远不会有孩子。

当我这样做时,我得到了这个结果:

  

[APPNAME.Folder copyWithZone:]:

tutorial that got me this far有嵌套对象,只有一种实体,我有两个。我需要在phrases

中准确表示核心数据对象

1 个答案:

答案 0 :(得分:0)

NSTreeControllerNSOutlineViewNSTableViewNSArrayController的工作方式相同。要使用NSTreeController,您不需要NSArrayController,您可以将树控件设置为实体模式。

  

我的实体不称为表视图单元

删除列绑定,它用于基于单元格的ouline视图。将大纲视图的内容绑定到树控制器,并将表视图单元格中的文本字段绑定到表格单元视图。

  

让我这么远的教程有嵌套对象和只有一种类型的实体,其中我有两个。

这是一个问题,因为NSTreeController只有一个childrenKeyPath,大纲视图中的文本字段只能与一个键绑定。据我所知,有两种解决方法。

解决方案1:创建NSTreeController的子类并覆盖

- (NSString *)childrenKeyPathForNode:(NSTreeNode *)node

托管对象为node.representedObject。 实现委托方法outlineView:viewForTableColumn:item:并为每个实体使用不同的视图。

解决方案2:创建NSManagedObject子类并实现子项的计算属性并显示,以便所有实体都回答相同的键。 我认为这个解决方案感觉不对,托管对象不应该包含视图代码,但是如果你已经有NSManagedObject个子类,那么它很容易实现。