0

サーバーと同期する必要のあるデバイスに保持されているデータがありますが、設計の観点から、正しい方向に進んでいますか?

ローカルオブジェクトを返すメソッドを持つモデルがあります。それを呼び出しましょう[model objects]';

このメソッド内では、ローカルオブジェクトがすぐに返されますが、サーバーがこれらのオブジェクトのいずれかを更新する必要があるかどうかも確認したいので、バックグラウンドスレッドで、を使用してasync NSUrlConnection、必要な各オブジェクトのJSONを返すメソッドを実行します。更新され、コアデータに保存されます。Table View Controllerで、値がいつ変更されたかを監視するようにKVOを設定してから、にupdatedObjects表示されているオブジェクトをリロードしますobjectTableView

質問:これはこれを処理する正しい方法ですか?私は何かが足りないのですか?どうにかしてこれを改善できますか?

また、更新中のオブジェクトのUITableViewCellsを無効にしてUIActivityIndicator、ダウンロードと保存の段階でを表示することも考えていますが、これによってUXで競合状態が発生するかどうかはわかりません。

うまくいけば、これはあなたが理解するのに十分に説明されました、あなたが質問をするならば、私はすぐに答えようとします。

4

1 に答える 1

0

CoreData内でこの種の問題がサポートされています。そして、さまざまなアプローチがあります。

基本的な要点は、非同期Web呼び出しのバックグラウンドスレッドで新しいコンテキストを作成し、ローカルデータを更新を管理する新しい受信データと比較することです。次に、スレッドコンテキストからメインコンテキストへのマージを実行します。この時点で、CoreDataの更新されたデータの通知を受け取り、ビューを更新できます。

NSFetchedResultsControllerこれをさらに単純化するために使用することもできます。

于 2012-11-06T18:32:56.330 に答える