在核心数据中维护复杂的单向关系

时间:2019-03-12 12:23:42

标签: core-data

我正在将Realm中的数据模型迁移到Core Data(以便可以与Ensembles同步)。该模型是一个图,在Realm中,我通过有关交易中删除等的规则自己管理图的完整性。

我在这里制作了一个示例图,旨在描述我的问题的症结所在。

图中的所有对象都是物。事物与其子事物之间存在有序的多对多关系。但是,subThings有多种链接方式。例如,一个DerivedFromThing类型具有两个对多关系(它们的逆关系将在另一Thing的subThings中)。

Simple Graph example

因此,我的图具有完整的逆关系集,但是没有一种似乎可以在Core Data中建模的方式。

由于我已经有了管理完整性的代码,因此我很乐意亲自照顾所有关系。但是,我在构建中收到警告,因此我想再次检查我是否采用了正确的方法。

有没有一种方法可以在Core Data中为我的许多关系建模?如果没有,我是否会忽略我的警告而遇到问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议避免在CoreData中使用单向关系:根据我的经验,当您不说任何逆运算时,CD会将其隐式视为“一对一”,这可能不是您想要的。

尽管CD可以处理许多关系,但在您的情况下,我认为您可能需要通过直接对中间实体(或可能两个或更多)建模来实现关系。例如,您可能有一个名为Association并带有

的实体
  • associationType的属性(“父”,“超级”或其他)
  • associatedTo实体的一对一关系Thing(具有一对多的倒数)
  • associatedFrom实体与DerivedFromThing的一对一关系(也具有一对多的倒数)

很难提供进一步的建议,因为我怀疑您的真实模型比您的示例更复杂,但是上述方法应该提供高度的灵活性。有关更多信息,请参见the Core Data Programming Guide中的“基于关系的语义建模”。