CoreDataメモ - その1

CoreDataのメモ(まだまだ理解できておらず現時点の勝手な理解なので間違っていたらすみません)

参考にさせていただいサイトです。

[Objective-C] CoreDataを使う - Qiita

サルでもわかる Core Data 入門【概念編】 - A Day In The Life

エンティティ:

  • 永続化対象のデータのことをこう読んでいる。
  • エンティティはXcodeのxcdatamodeldファイルからGUIで作成することができる。 ここで作ったデータがDBのテーブルに相当するものになる。

右にある図がエンティティです。

f:id:espoirka:20140827200644p:plain

NSManagedObject:

  • モデルクラス
  • Core Data で永続化するオブジェクトは必ずこのクラスのオブジェクトかこのクラスのサブクラスのオブジェクトでなければいけない、とのこと。
  • エンティティで作成したデータと対応するクラスを関連付けることでコード上からデータに対する操作が可能になる。

f:id:espoirka:20140827200805p:plain

エンティティとNSManagedObject の関連付けされてるのがここでわかる。

f:id:espoirka:20140827200957p:plain

NSManagedObjectContext:

  • 処理の実行
  • 検索条件やデータに対する操作リクエストは、NSFetchRequest が担っており、このリクエストを元に実際にデータの検索、挿入更新削除や Undo Redo 処理の実行を行う

NSFetchRequest:

  • 条件の管理
  • データに対する検索条件などのリクエスト情報を管理する。このリクエスト情報をNSManagedObjectContext が実行することで処理が行われる。

NSFetchRequest でリクエスト情報を生成し、NSManagedObjectContext executeFetchRequest で実際にリクエストを投げる例はこんな感じ。

    // 格納したデータのフェッチ
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];
    [request setEntity:entity];
    
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" ascending:NO];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];
    
    NSError *error = nil;
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

その他にもCoreDataを利用する設定でXcodeでプロジェクトを作ると、色々なクラスが自動生成されています。 それらについてはおいおい勉強します。。

とりあえずCoreDataを手始めに使ってみるのであれば、上記の4つを触ればよいようです。

今CoreDataのチュートリアルObjective-C版でやったので、今度Swift版も作ってみます。