2016-07-01 10 views
2

私はCoreDataを置き換えて、偉大なRealmライブラリで自分のアプリをリファクタリングしています。 私が直面している1つの問題は、カスケード削除の欠如と、この重要なステップを別の方法で行うための良い提案が欠落していることです。カスケードのような削除を実現するためのレルムのベストプラクティス

私のモデルは

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

人とそのすべてのreleted犬やdog.walksを削除するときのベストプラクティスとは何であるとして説明することができますか?

全部反復?または、子オブジェクトの参照を取得するための他のメソッドがありますか?

答えて

3

今のところ、サイクルを回避しながら、削除をカスケードする関係上のオブジェクトのみを削除しながら、関連するすべてのオブジェクトとその関連オブジェクトなどをトラバースする必要があります。

これは、オブジェクトモデルに応じて、関連するオブジェクトごとに再帰的メソッドを実装することによって実現できます。 cascadeDeleteは、関連オブジェクトのメソッドを呼び出します。オブジェクト自体を削除することは、常に最後のステップでなければなりません。そうしないと、オブジェクトは無効になり、その関係にはもうアクセスできなくなるからです。その横に

、あなたがRLMArrayRLMResults含ん何NSFastEnumeration -implementingコレクションを削除することができます方法-\[RLMRealm deleteObjects:\]があることを知ることが役に立つかもしれません。

関連する問題