5

こんにちは、現在、次のプロパティを持つアプリを構築しています。

  1. ストレージに Core Data を使用
  2. 一度に 1 つのアイテムを表示するフィードがある
  3. アイテムがない場合、アプリは非同期でサーバーからフェッチを呼び出します

非同期フェッチを処理するのはかなり難しいことが証明されています。

現在、サーバーから取得したアイテムを Core Data に直接保存しています。

アプリが新しいアイテムを必要とするたびに、Core Data に未表示のアイテムを問い合わせています。

このコアデータの継続的なクエリにより、アプリのパフォーマンスに関していくつかの重大な影響が見られます。

メモリ内の配列を使用してインデックスを保持することを考えましたが、配列スレッドを安全に保つためにロックやその他の同時実行手段を使用する必要があるため、アイテムから外れた場合のフェッチの非同期の側面は複雑すぎることがわかりました。

Core Data への呼び出しの合計を減らす方法について何か提案はありますか?

4

1 に答える 1

0

永続的なストアへの移動を最小限に抑える必要があるため、表示すると予想される適切な数のアイテムをフェッチします。Core Data は管理対象オブジェクトのフォールトにおいて非常に効率的であるため、メモリ フットプリントは問題になりません。

表示するアイテムが不足しているが、配列にまだいくつか残っている場合は、さらにフェッチしてみてください。

この時点で結果が得られない場合は、独自のマネージド オブジェクト コンテキストを使用して非同期キューをディスパッチし、新しいマネージド オブジェクトを作成し、メイン コンテキストを保存して通知し、変更をマージできるようにします。

それが完了したら、新しいアイテムの取得に戻ります。

于 2013-03-07T07:01:27.643 に答える