NSFetchedResultsControllerはいつ更新されますか?

core-data iphone nsfetchedresultscontroller objective-c
NSFetchedResultsControllerはいつ更新されますか?

述語を使用していくつかの管理対象オブジェクトを取得する「NSFetchedResultsController」を使用しています。 私は常に、オブジェクトが変更されると、つまり「NSFetchedResultsController」が更新されると想定していました。 述語 " box == 3 "`があり、 `box`が 2`に変更された場合、フェッチされません。

ただし、オブジェクトを変更し、管理対象オブジェクトコンテキストを保存しても、FRCを介してオブジェクトにアクセスできます。 キャッシュを削除する場合でも、これは可能です。

これは正しい動作ですか?

  1  0


ベストアンサー

NSFetchedResultsControllerのデリゲートを設定しましたか? 管理対象オブジェクトのコンテキストで変更が発生すると、NSFetchedResultsControllerのデリゲートが変更の通知を受けます。 以下をご覧ください。

2


簡単な方法 テーブルを更新するには、FRCを「nil」に設定してリロードするだけです。 これは、すべての更新の問題を処理する傾向があり、非常に効率的です。 FRCはそれ自体を遅延して再作成し、テーブルにデータを取り込みます。

self.fetchedResultsController = nil;
[self.tableView reloadData];

2


いくつかのさらなるテストの後、私が何もしなければ「FRC」が更新されないと仮定するのは無難だと思います。 `-performFetch:`を1回だけ呼び出し、デリゲートを実装しませんでした。 ドキュメントによると、 `FRC`は変更通知を登録するためだけに_seems_します:

_
フェッチされた結果コントローラーのデリゲートを設定すると、コントローラーは管理オブジェクトコンテキストから変更通知を受信するように登録します。
_

0


タイトルとURLをコピーしました