当前位置:  开发笔记 > 数据库 > 正文

获取核心数据实体,但不获取子实体

如何解决《获取核心数据实体,但不获取子实体》经验,为你挑选了1个好方法。

假设我在层次结构中组织了Parent实体,Child它们是根实体并且是子类Parent.我想设置一个NSArrayController只获取实体Parent,但不是Child.

如果您在Interface Builder中设置的实体名称的阵列控制器来Parent,它获取所有ParentChild实体.我最初尝试在Interface Builder中将数组控制器的fetch谓词设置为:

entity.name == "Parent"

这适用于XML存储,但是当我切换到SQLite存储时,它不再起作用.我收到以下错误:

keypath entity.name not found in entity 

作为一种解决方法,我在我的设置过滤谓词(具有与entity.name上面相同的谓词)awakeFromNib仅过滤父实体.显然,一旦实体在内存中,该谓词就有效,但您不能在SQL支持的提取谓词中使用它.

有没有办法只提取Parent实体,而不是Child使用与SQLite存储一起使用的提取谓词的实体?使用过滤谓词来提取您只会忽略的实体似乎很浪费.



1> Chris Hanson..:

includesSubentities为了这个目的,Leopard将该属性引入了NSFetchRequest.您必须子类化NSObjectController或NSArrayController以提供它将通过其defaultFetchRequest属性使用的获取请求,或者通过覆盖其-fetchWithRequest:...方法来更改它使用的获取请求.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有