CoreData 困境:没有反向关系的实体

Posted

技术标签:

【中文标题】CoreData 困境:没有反向关系的实体【英文标题】:CoreData dilemma: entity without inverse relationship 【发布时间】:2015-05-21 07:31:54 【问题描述】:

我有实体 ImagePost。 Post 与 Image 具有单向 Nullify 关系。这是一个关系而不是一个属性,因为我想从关系的延迟加载中受益,使 Post 实体的初始获取非常快。你可以猜到,Image 包含图像数据。

Apple 通常不鼓励单向关系 (Link),除非有充分的理由不建立反向关系。

我没有它的原因是Image 是一个通用实体,因此与所有使用它的实体建立反向关系似乎有点矫枉过正。但是,我想知道是否有更好的方法来解决这个问题而不违反苹果的建议。

【问题讨论】:

【参考方案1】:

父实体。

CommentBlogPostTweet 都继承了 images 关系。反向关系指向一个 TextContent 对象,它可以是 Comment、BlogPost、Tweet 或 TextContent 本身。

【讨论】:

好的,干净的方法,我可以保持反向关系。 这是一个不错且干净的解决方案,我也一直在考虑引入,但我一直听说 Core Data 中的继承效率低下,因为它会膨胀底层数据库,因为所有属性(父母+孩子)最终会在同一张桌子上并占用大量空间?【参考方案2】:

正如苹果所说...Unidirections Relationships

没有必要在两者中建立关系模型 方向

顺便说一句,如果 CoreData 检测到这样做更好,我认为属性也可以延迟加载(由系统)...

您可以对此感兴趣 avoid warnings in your project

【讨论】:

以上是关于CoreData 困境:没有反向关系的实体的主要内容,如果未能解决你的问题,请参考以下文章

将两个 CoreData 关系(具有反向关系)分配给同一个实体

CoreData Parent Children 使用单个实体的一对多反向关系

在 Core Data 中获取具有关系的实体

Core Data 中的多重逆关系

不要 nil Core Data 反向关系

在 Core Data 中建模逆向关系