データ取得
UITableView が表示するデータを UITableViewDataSource へ要求する。通常 UITableViewController がこのプロトコルを実装していて NSFetchedResultController から必要なデータを取得し、UITableViewへ返す。NSFetchedResultController は大抵の場合、UITableVIewController 初期化時にフェッチを行っていて、データ取得の要求があった場合は取得済みのデータを返す。
なお NSFetchedResultController の持つ cache はデータそのキャッシュではなく、section と ordering に関するもの。アプリケーションのレベルで管理される。
Where possible, a controller uses a cache to avoid the need to repeat work performed in setting up any sections and ordering the contents. The cache is maintained across launches of your application.
[参照] NSFetchedResultsController Class Reference
データ操作
データの追加や変更、削除は、NSFetchedResultsControllerではなく、NSManagedObjectContext に対して行う(② データ操作)。NSFetchedResultsController は NSManagedObjectContext を監視していて NSManagedObjectContext に変更が入った場合は NSFetchedResultsControllerDelegate へコールバックする(③ コールバック)。
コールバックされたらモデルの変更状況をビューである UITableView へ反映させる(④ 表示更新)。
- - -
Xcode で新規プロジェクトを作成する時に Navigation-based Application を選び、"Use Core Data for storage" にチェックを入れると、データの取得に加え、コールバックメソッドの処理の雛形を生成してくれる。
参考情報
- NSFetchedResultsController Class Reference
- リファレンス。Overview は簡潔だがわかりやすい。delegate と cache の話がまとめられている。
- NSFetchedResultsControllerDelegate
- コールバック用のプロトコル
Responses
Leave a Response