核心数据中的多个反向关系

JPC*_*JPC 4 cocoa core-data objective-c nsmanagedobject

我有一个实体库,它包含两个书籍列表.图书馆保留这两本书籍非常重要.在我的图书馆实体上,我有一个从每个列表到我的图书实体的一对多的关系.同样,Book有一个关系"库".我的数据从数据库中删除时出现了一些问题,我发现我应该设置反向关系以帮助保持数据完整性.但是,在这种情况下,Book会希望能够与我的Library实体上的每个列表建立反向关系.我怎么能做到这一点?

我天真的第一个想法是为两个列表实现关系.因此,一本书有一个关系"libraryForList1"和"libraryForList2",因此它可以为每个关系提供一个反转.我永远不必实际引用这些属性,因为根据Core Data规范,如果我将一本书添加到其中一个库列表中,它会自动将库设置为该书籍所有者.

Sco*_*bes 5

你的"天真的第一想法"基本上是正确的:如果你的图书馆的实体有两个一个一对多与图书(为清楚起见我们称之为的关系,关系ownedBooksborrowedBooks),那么你的书的实体应该有一逆的关系(owningLibraryborrowingLibrary),然后核心数据将使您的生活更轻松.

您可能还需要考虑这些关系删除规则:如果一本书是为某些原因被删除,对于删除规则owningLibrary,并borrowingLibrary很可能会抵消 -也就是说,这两个库会从他们的名单中删除图书.删除仍然有书籍的图书馆似乎是一个坏主意,所以也许对于删除规则ownedBooks,并borrowedBooks拒绝:库不能被删除,直到书都占(从库中移除).