仅在父子实体具有 1 到 M 关系的核心数据中获取父实体的数据
Posted
技术标签:
【中文标题】仅在父子实体具有 1 到 M 关系的核心数据中获取父实体的数据【英文标题】:Fetch only Parent entity's data in Core Data where Parent Child entity has 1 to M relationship 【发布时间】:2018-04-08 07:29:56 【问题描述】:我有 2 个实体。 国家和地区。国家与地区之间存在一对多关系。如果我获取国家(通过 CountryID 谓词),它将返回具有所有相关区域的特定国家属性。
就我而言,我不需要区域数据(包含大量数据)。怎么可能?
按照线程说,NSFetchRequest 的 includesSubentities 可以做到这一点。但它不适合我!
Core data NSFetchRequest also fetches children objects of the Entity
【问题讨论】:
您能说明国家和地区是如何定义的吗?我不明白 country 是否是 region 的父实体,或者它们是否具有一对多关系。 Country to Region关系是1到M。可以称Country为Region的父实体 i.stack.imgur.com/n41bf.png i.stack.imgur.com/Dq0dp.png 当然,我只是被标题弄糊涂了。 includeSubEntities 不只与继承相关吗? 只要不访问 Region 的任何属性,就不应该获取任何 Region 对象。 【参考方案1】:NSFetchRequest
的默认值是 true
returnsObjectsAsFaults
,因此除非您更改了此属性,否则您的区域将仅是故障,而不是完整的对象。
您可以通过propertiesToFetch
属性仅提供您感兴趣的属性来进一步限制获取的数据。
您应该一如既往地警惕预优化;如果性能是一个问题,那么您可以查看它,但我怀疑即使获取数千个Region
s 作为故障也会对性能产生影响。
【讨论】:
你是说用 fault fire 来获取。但我的查询不在这一点上。 我还说过,如果你不想要regions
,那么不要在propertiesToFetch
中包含该属性。您要我扩展答案的那一部分吗?关键是除非您引用相关区域之一的属性,否则相关区域不会被获取,它们只是故障。以上是关于仅在父子实体具有 1 到 M 关系的核心数据中获取父实体的数据的主要内容,如果未能解决你的问题,请参考以下文章