我有一个核心数据模型,它由一个特定实体的简单树组成,它有两个关系,parent
和children
。我有一个NSTreeController
管理模型,NSOutlineView
绑定到NSTreeController
。如何将NSTreeController,NSOutlineView和Core Data用于“不可见”根项目?
我的问题是我需要一个根对象,但这不应该显示在大纲视图中,只有它的子项应显示在大纲视图的顶层。如果我将Interface Builder中的NSTreeController
的获取谓词设置为parent == nil
,则一切正常,除了根项目作为大纲视图中的顶级项目可见。
我的实体有一个属性isRootItem
,这对于根项目来说只适用。
我的模型看起来是这样的:
Node 1
|
+-Node 2
| |
| +-Node 5
|
Node 3
|
Node 4
大纲视图应该是这样的:
Outline View Image http://menumachine.com/quickies/nodes.png
我需要的顶级显示节点2,3和4大纲视图(节点1不应该是可见的),但仍然有他们的父母是“节点1”。节点1的值为YES
(isRootItem
),其他所有节点的值为NO
。
如果我将树控制器的获取谓词设置为parent.isRootItem == 1
,这会正确显示树,但只要向最高级别添加一个新项目,就会失败,因为树控制器未分配“不可见”根目录项目作为新项目的父项目。
有没有办法让NSTreeController
/NSOutlineView
组合在这种情况下工作?
您可以在没有检查的情况下简单地将谓词写为'parent.isRootItem'。 – Abizern 2009-11-05 07:01:59
谢谢,你是对的。 – 2009-11-05 07:20:45