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

时间:2016-07-01 08:20:46

标签: ios objective-c realm

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

我的模型可以描述为

Person - idx, <RLMarray Dogs>
Dog - idx, <RLMarray Walks>
Walk - distance, time

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

迭代所有人?或者是否有其他方法可以获得子对象的引用?

1 个答案:

答案 0 :(得分:4)

目前,您需要遍历所有相关对象及其相关对象等,同时避免循环,只删除对象应该级联删除的对象。

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

除此之外,了解有一种方法-\[RLMRealm deleteObjects:\]可以帮助您删除NSFastEnumeration - 实施包含RLMArrayRLMResults的集合。