CoreDataのメモ

SQLight と CoreData

内部ではSQLightでデータ持ってるけど、
RoR的発想でオブジェクトとして持ちたい。

そこでSQLightの部分は隠蔽しちゃってCoreDataを使おう。

NSPredicateクラス

CoreDataにSQLでいうwhereにあたるものを書きたいときには
NSPredicateを使って条件を指定する。

マジカルレコード

CoreDataでデータを取ろうとすると、
数行くらいゴリゴリ書かないといけないので、
マジカルレコードというのを使うと、
その数行を1行で書けちゃう。

マジカルレコードが返すコントローラ

マジカルレコードはNSFetchedResultsControllerのインスタンスを返す。
このNSFetchedResultsControllerのインスタンスは、
データの入ったCoreDataを持ってるので、表示したいデータは
NSFetchedResultsControllerを使って書いていくことになる。

NSFetchedResultsControllerとテーブル(UITableViewController)の関係

NSFetchedResultsControllerをデータソースとして、
UITableViewControllerの

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath

メソッドでテーブルのレコードを描画していく。
データソースとしてと難しく書いたけど、

Hoge *hoge = [fetchedResultsController objectAtIndexPath:indexPath];

と普通にデータ取り出してけばよい。