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