假设我有以层次结构组织的实体,它们Parent
是根实体并Child
是Parent
. 我想设置一个NSArrayController
来仅获取 的实体Parent
,但不获取Child
。
如果在 Interface Builder 中将数组控制器的实体名称设置为,Parent
它将获取所有实体。我最初尝试在 Interface Builder 中将数组控制器的 fetch 谓词设置为:Parent
Child
entity.name == "Parent"
这适用于 XML 存储,但是当我切换到 SQLite 存储时,它不再有效。我收到以下错误:
keypath entity.name not found in entity <NSSQLEntity xxx>
作为一种解决方法,我在我的中设置了一个过滤谓词(具有与上述相同的entity.name
谓词)awakeFromNib
来仅过滤父实体。显然,一旦实体在内存中,该谓词就有效,但您不能在 SQL 支持的提取谓词中使用它。
有没有办法只获取Parent
实体,而不是Child
使用与 SQLite 存储一起使用的获取谓词的实体?使用过滤谓词引入您只会忽略的实体似乎很浪费。