2010-01-25 158 views
7

假设我的数据模型中有4个实体:Person,Car,Pet和Photo。我希望从Person Car and Pet到Photo实体的关系,因为我希望每件事都包含该项目的照片。到目前为止,没有问题。虽然它变得棘手的地方是相反的关系,这是照片实体想要指向附加项目的地方。我宁愿要么完全没有反向关系,所以Photo中唯一的属性就是UIImage,或者可能是一个单独的附件反向关系。如果我这样做,我只能选择其中一个项目来附加到我的关系。核心数据:与多个实体的反向关系?

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

回答

12

我将使照片成为一个抽象实体,并创建每个以Photo作为其父实体的PersonPhoto,CarPhoto和PetPhoto实体。

Person,Car和Pet分别与PersonPhoto,CarPhoto和PetPhoto有一对一的关系。然后,PersonPhoto,CarPhoto和PetPhoto可分别与Person,Car和Pet分别具有单个所需的一对一反向关系。

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

+0

超级解答的男人。阅读完后,我的整个模型都被简化了 – 2011-08-08 02:39:17