核心数据:与多个实体的反向关系?

Posted

技术标签:

【中文标题】核心数据:与多个实体的反向关系?【英文标题】:Core Data: An Inverse Relationship to multiple entities? 【发布时间】:2010-01-25 01:52:38 【问题描述】:

假设我的数据模型中有 4 个实体:Person、Car、Pet 和 Photo。我想要从 Person Car 和 Pet 到 Photo 实体的关系,因为我希望这些东西中的每一个都包含该项目的照片。到目前为止,没有任何问题。虽然它变得棘手的是反向关系,这是照片实体想要指向附加项目的地方。我宁愿根本没有反向关系,所以 Photo 中的唯一属性是 UIImage,或者可能是单个 attachItem 反向关系。如果这样做,我只能选择其中一项附加到我的关系中。

将其保留为单向关系会更好吗?也许我可以创建一个名为“AttachableItem”的抽象实体,让 Person Car 和 Pet 成为它的孩子,然后让我的反向关系指向 AttachableItem。我不确定哪种方式最好。

【问题讨论】:

【参考方案1】:

我会让 Photo 成为一个抽象实体,并创建 PersonPhoto、CarPhoto 和 PetPhoto 实体,每个实体都以 Photo 作为其父实体。

Person、Car 和 Pet 将分别与 PersonPhoto、CarPhoto 和 PetPhoto 具有一对一的关系。然后,PersonPhoto、CarPhoto 和 PetPhoto 可以分别与 Person、Car 和 Pet 具有单一的一对一逆向关系。

Photo 实体仍将具有单一属性。您可以将图像存储在应用程序的 Documents 目录中的文件中,并将文件名保存为此属性。 this answer 推荐使用这种方法。或者,您可以通过使用UIImagePNGRepresentation()UIImageJPEGRepresentation() 将图像转换为NSData,将图像作为可转换属性直接存储在Core Data 中。

【讨论】:

超级回答人。看完这篇我的整个模型都被简化了

以上是关于核心数据:与多个实体的反向关系?的主要内容,如果未能解决你的问题,请参考以下文章

具有多个实体和 uitableview 的核心数据

如何创建从一个实体到另一个现有实体的核心数据关系?

核心数据:父实体与关系

创建核心数据反向关系

是否可以在核心数据模型中自动创建反向关系?

iPhone核心数据得到孙子