我有一个核心数据模型,它由一个特定实体的简单树组成,它有两个关系,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 的值为YES
for isRootItem
,所有其他节点的值为NO
。
如果我将树控制器的 fetch 谓词设置为parent.isRootItem == 1
,这将正确显示树,但是一旦我将新项目添加到顶层它就会失败,因为树控制器没有将“不可见”根项目分配为新项目。
有没有办法让NSTreeController
/NSOutlineView
组合在这种情况下工作?