我正在使用优秀的Realm库重构我的应用程序,以替换CoreData。 我遇到的一个问题是缺少级联删除,并且没有任何好的建议如何以另一种方式完成此重要步骤。
我的模型可以描述为
Person - idx, <RLMarray Dogs>
Dog - idx, <RLMarray Walks>
Walk - distance, time
在删除一个人及其所有相关的狗和遛狗记录时,最好的做法是什么?
是迭代所有对象吗?还是有其他方法可以获取子对象的引用?
我正在使用优秀的Realm库重构我的应用程序,以替换CoreData。 我遇到的一个问题是缺少级联删除,并且没有任何好的建议如何以另一种方式完成此重要步骤。
我的模型可以描述为
Person - idx, <RLMarray Dogs>
Dog - idx, <RLMarray Walks>
Walk - distance, time
在删除一个人及其所有相关的狗和遛狗记录时,最好的做法是什么?
是迭代所有对象吗?还是有其他方法可以获取子对象的引用?
目前,您需要自行遍历所有相关对象及其相关对象,并在避免循环的同时仅通过应该级联删除的关系来删除对象。
这可以通过根据对象模型在每个涉及对象上实现递归方法(例如 cascadeDelete
)来实现,该方法调用相关对象上的方法来实现。删除对象本身必须始终是最后一步,否则对象将无效且其关系将不再可访问。
此外,还可能有帮助的是知道有一个方法-\[RLMRealm deleteObjects:\]
,它让您删除实现NSFastEnumeration
的集合,其中包括 RLMArray
和 RLMResults
。