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

cocoa – 获取核心数据实体,但不获取子实体,第1张

概述假设我在层次结构中组织实体,其中Parent是根实体,Child是Parent的子类.我想设置一个NSArrayController来只获取Parent的实体,而不是Child. 如果将Interface Builder中的数组控制器的实体名称设置为Parent,则它将获取所有父实体和子实体.我最初尝试在Interface Builder中将数组控制器的fetch谓词设置为: entity.nam 假设我在层次结构中组织实体,其中Parent是根实体,Child是Parent的子类.我想设置一个NSArrayController来只获取Parent的实体,而不是Child.

如果将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 – 获取核心数据实体,但不获取子实体所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1006824.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存