私は非常に一般的な状況であると推測しますが、iOSプログラミングに慣れていないため、それをコーディングするための最適な方法がわかりません。
あらすじ:
サーバー上にRESTサービスを介してiPhoneアプリで取得できるデータがあります。サーバー側では、データは外部キー(整数ID番号)を持つオブジェクトです。
RESTを介して取得したデータをCoreDataに保存しています。管理対象オブジェクトには「objId」属性があるため、コードの残りの部分で管理対象オブジェクトを一意に識別できます。
私のアプリは常にサーバーデータを反映する必要があります。
サーバーに対して行われた後続の要求について:
一部のオブジェクトは返されない可能性があります。それらはサーバー上で削除されています(その場合、対応するオブジェクトをCore Dataから削除する必要があります)。これにより、サーバーの状態が正しく反映されます。
一部のオブジェクトには変更された属性があるため、対応する管理対象オブジェクトを新しいデータで更新する必要があります。
私の解決策-そしてあなたへの質問
アプリで問題を解決するために、Core Data内のすべてのオブジェクトを削除してから、最新のサーバー側データで作成されたすべての新しいオブジェクトを追加するという最も簡単なソリューションを作成しました。
これが最善のアプローチだとは思いません:)アプリを進めていくうちに、テーブルビューをNSFetchedResultsControllerにリンクしたいと思います。そして、すべてを削除して再追加するという私のアプローチがうまくいかないことに気づきました。もう働くために。
Core Dataをサーバー側のデータと同期するための実証済みの信頼できる方法は何ですか?
サーバーから取得したオブジェクトIDごとにフェッチ要求を行い、オブジェクトを新しいデータで更新する必要がありますか?
次に、コアデータ内のすべてのオブジェクトを調べて、更新されていないオブジェクトを確認し、それらを削除しますか?
それが最善の方法ですか?CoreDataのオブジェクトごとにフェッチを実行するのは少し費用がかかるようです。それだけです。
擬似コードはどんな答えにも問題ありません:)
前もって感謝します!