实现级联式删除的领域最佳实践

Emi*_*lDo 4 objective-c realm ios

我正在用伟大的 Realm 库重构我的应用程序,替换 CoreData。我面临的一个问题是缺乏级联删除,并且缺少关于如何以另一种方式完成这一重要步骤的任何好的建议。

我的模型可以描述为

Person - idx, <RLMarray Dogs>
Dog - idx, <RLMarray Walks>
Walk - distance, time
Run Code Online (Sandbox Code Playgroud)

删除 Person 及其所有相关的狗和 dog.walks 时的最佳做法是什么?

迭代所有?或者有没有其他方法可以获取子对象的引用?

mar*_*ius 6

现在,您需要自己遍历所有相关对象及其相关对象等,同时避免循环并且仅删除应该级联删除的关系上的对象。

这可以根据对象模型通过在每个涉及的对象上实现递归方法来实现,例如cascadeDelete,调用相关对象上的方法。删除对象本身必须始终是最后一步,否则对象将失效并且其关系不再可访问。

除此之外,知道有一种方法-\[RLMRealm deleteObjects:\]可以让您删除NSFastEnumeration实现集合的内容可能会有所帮助RLMArrayRLMResults