我有一个核心数据模型,它由一个特定实体的简单树组成,它有两个关系,parent并且children. 我有一个NSTreeController管理模型,NSOutlineView绑定到NSTreeController.
我的问题是我需要一个根对象,但这不应该显示在大纲视图中,只有它的子对象应该显示在大纲视图的顶层。NSTreeController如果我将Interface Builder 中的 fetch 谓词设置为parent == nil,则一切正常,除了根项在大纲视图中作为顶级项可见。
我的实体有一个属性 ,isRootItem仅适用于根项目。
我的模型如下所示:
Node 1
|
+-Node 2
| |
| +-Node 5
|
Node 3
|
Node 4
大纲视图应如下所示:

(来源:menumachine.com)
我需要在大纲视图的顶层显示节点 2、3 和 4(节点 1 应该不可见),但它们的父节点仍然是“节点 1”。节点 1 的值为YESfor isRootItem,所有其他节点的值为NO。
如果我将树控制器的 fetch 谓词设置为parent.isRootItem == 1,这将正确显示树,但是一旦我将新项目添加到顶层它就会失败,因为树控制器没有将“不可见”根项目分配为新项目。
有没有办法让NSTreeController/NSOutlineView组合在这种情况下工作?