私が想定していたことは非常に一般的な状況ですが、iOSプログラミングの初心者であるため、コードを書く最適な方法がわかりません。Core Dataとサーバー側のデータを同期させる最適な方法は?
あらすじ:
私はRESTサービスを介してiPhoneアプリで取得することができ、サーバ上のデータを持っています。サーバー側では、データは外部キー(整数ID番号)を持つオブジェクトです。
私は、RESTで取得したデータをコアデータに保存しています。管理対象オブジェクトには「objId」属性があり、残りのコードで管理対象オブジェクトを一意に識別することができます。
私のアプリは常にサーバーのデータを反映している必要があります。サーバーに対して行われた後続の要求で
:
いくつかのオブジェクトが返されないことが、彼らは、サーバー上で削除された - 私はコアデータから対応するオブジェクトを削除する必要があり、その場合には - ように私はサーバーの状態を正しく反映しています。
一部のオブジェクトには属性が変更されているため、対応する管理対象オブジェクトは新しいデータで更新する必要があります。
私の解決策 - あなたへの質問
物事が私のアプリでは、軌道に乗るために、私が使用して作成し、内のすべての新しいオブジェクトを追加し、コアデータ内のすべてのオブジェクトを削除する最も簡単な解決策を作りました最新のサーバー側のデータ
私はこのアプローチに最適な方法だとは思わない:)私は私のアプリケーションで進歩すると、私は今NSFetchedResultsControllerと私のテーブルビューをリンクしたいと思って、すべてを削除し、追加はこれ以上は機能しません。
コアデータをサーバー側のデータと同期させるために試して信頼できる方法は何ですか?
サーバーから戻ってくるオブジェクトIDごとにフェッチ要求を作成し、オブジェクトを新しいデータで更新する必要がありますか?
コアデータ内のすべてのオブジェクトを調べ、どのオブジェクトが更新されていないかを確認し、それらを削除しますか?
これを実行する最善の方法はありますか?コアデータの各オブジェクトのフェッチを行うのはちょっと高価なようです。それだけです。
擬似コードは、すべての答えの罰金です:)事前に
感謝!
ありがとうございました!そこに私が物事をやっているやり方を再設計するのに本当に役立つヒントがたくさんあります。 – Stretch