【发布时间】:2017-06-13 23:55:04
【问题描述】:
我花了好几个小时试图弄清楚如何使用 Objective-C 在 Realm 中设置对象关系模型和创建/删除多对多关系。文档帮助不大。关于是否使用 RLMArray 或 RLMLinkingObjects,我可以使用一些指导...我正在从 Core Data 关系数据库迁移,并且有几个我正在尝试建模的多对多关系,这对我来说根本没有意义。唯一显示多对多关系的文档显示了一个与它自己的两个属性相关的类。其中一个属性使用 RLMArray,另一个使用 RLMLinkingObjects。这对我来说毫无意义,因为多对多关系应该是双向的,并且应该能够通过任一方添加或删除关系。也许我想错了,但我迷路了,希望能得到一些帮助。
【问题讨论】:
-
RLMArray是指向多个对象的单向链接,RLMLinkingObjects是指向链接到该对象的对象的单向反向链接。可以通过RLMArray修改关系,它会自动管理其逆关系(对应RLMLinkingObjects)。如果您需要修改与目标的关系,则可以使用通过主键跨链接对象的链接查询来找到具有RLMArray的对象。 -
在这一点上,您能指导我看一些演示这一点的代码吗?我并不是想找人为我做我的工作——我真的花了几个小时尽可能彻底地研究它,但不知道如何设置这一切。
-
...好吧,我会尝试从文档中将一些 sn-ps 放在一起。我不精通任何 iOS(尤其是如果您看到我的帖子历史记录和标签)
-
我很感激 - 但我已经搜索了文档,这对我来说仍然没有任何意义。我想我只是没有掌握它。
-
差不多,取决于哪一边指向哪一边。反向是自动管理的。例如,您可以将
dogs.owner建模为 RLMArray,但您也可以将person.dogs建模为此类。通常,person.dogs更有意义。RLMArray是您添加属于该对象的内容的位置,如果您向 RLMArray 添加/删除任何内容,链接的内容将自动管理。
标签: objective-c many-to-many realm rlmarray rlmlinkingobjects