假设我有一个层次结构的实体,Parent
是根实体,Child
是Parent
的子类。我想设置一个NSArrayController
以仅提取Parent
的实体,但不提取Child
。提取核心数据实体,但不提取子实体
如果您将Interface Builder中的阵列控制器的实体名称设置为Parent
,则它将获取所有Parent
和Child
实体。我本来试图在Interface Builder设置阵列控制器的获取谓语:
entity.name == "Parent"
这个工作对一个XML存储,但是当我切换到一个SQLite存储,它不再工作。我得到以下错误:
keypath entity.name not found in entity <NSSQLEntity xxx>
由于周围的工作,我在我的awakeFromNib
建立一个过滤谓词(与上述相同entity.name
谓语)仅过滤父实体。显然,谓词在实体处于内存中时是有效的,但不能在SQL支持的谓词谓词中使用它。
有没有办法只提取Parent
实体,但不是Child
实体使用与SQLite存储一起使用的提取谓词?使用过滤器谓词来拉入实体时,看起来很浪费。
除了上面Dave Dribin的回答之外,还要确保将clearsFilterPredicateOnInsertion设置为NO,以便在您插入或删除某些内容时您的过滤器不会被清除(您可以在代码或IB中执行此操作) 。 – StevenO 2014-02-28 15:59:38