
如果将Interface Builder中的数组控制器的实体名称设置为Parent,则它将获取所有父实体和子实体.我最初尝试在Interface Builder中将数组控制器的fetch谓词设置为:
entity.name == "Parent"
这适用于XML存储,但是当我切换到sqlite存储时,它不再起作用.我收到以下错误:
keypath entity.name not found in entity <NSsqlEntity xxx>
作为解决方法,我在awakeFromNib中设置过滤谓词(具有与上面相同的entity.name谓词)以仅过滤父实体.显然,一旦实体在内存中,该谓词就有效,但您不能在sql支持的提取谓词中使用它.
有没有办法只使用与sqlite存储一起使用的获取谓词来获取父实体,而不是获取子实体?使用过滤谓词来提取您只会忽略的实体似乎很浪费.
解决方法 为了这个目的,Leopard将includesSubentitIEs属性引入了NSFetchRequest.您必须子类化NSObjectController或NSArrayController以提供它将通过其defaultFetchRequest属性使用的获取请求,或者通过重写其-fetchWithRequest:…方法来更改它使用的获取请求. 总结以上是内存溢出为你收集整理的cocoa – 获取核心数据实体,但不获取子实体全部内容,希望文章能够帮你解决cocoa – 获取核心数据实体,但不获取子实体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)