核心数据:与多个实体的反向关系?
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 中。
【讨论】:
超级回答人。看完这篇我的整个模型都被简化了以上是关于核心数据:与多个实体的反向关系?的主要内容,如果未能解决你的问题,请参考以下文章