フィード内のディクショナリ オブジェクトとコア データ内の並べ替えられたエンティティとの間の次の相関関係を考慮してください。
Feed CoreData
---- --------
A A
B B
C C
D D
フィードを列挙しているとき、エンティティで A の[stringForKey:@"name"]
isEqualToかどうかを確認A.name
します。一致する場合は、エンティティを更新します。そうでない場合は、新しいエンティティを CoreData に挿入します。
これは、更新と挿入には問題なく機能しますが、削除には機能しません。オブジェクト C がフィードから削除されたとします。
Feed CoreData
---- --------
A A
B B
D C
D
フィードの "D" に到達すると、CoreData のオブジェクト "C" が一致しないことがわかり、新しいオブジェクト D が作成されます。したがって、2 つの問題があります。2 つの "D" オブジェクトがあり、オブジェクト " C" は CoreData から削除されません。
だから私はこれで終わりたいと思っています:
Feed CoreData
---- --------
A A
B B
D D
私が現在得ているのはこれです:
Feed CoreData
---- --------
A A
B B
D C
D
D
これは一般的な問題に違いないので、コア データからエンティティを削除するタイミングを決定するためのベスト プラクティスは何なのか疑問に思っています。