- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#e86b220c]
#contents
*基本 [#k8653560]
:Persistent store|バックエンド。SQLite3とか。
:Data model|テーブルスキーマ。
:Persistent store coordinator|Persistent storeとData modelを使う。
:Managed object an managed object context| DTOとContext。
:Fetch requerst|条件を駆使してオブジェクトを取り出す。
*プロジェクトの作成 [#z2dcfcca]
-プロジェクトの新規作成で、「Navigation based Application」か「View-based Application」を選択し、「Use Core Data for storage」にチェックを入れる。
*構成要素 [#d1072375]
**Persistent store [#vbafd56c]
-バックエンド。SQLite3とか。
**Data model [#vbbe47c1]
-テーブルスキーマ。
-Xcodeのデータモデルエディタで作る。.xcdatamodeldに保存される。
-Object-CのクラスとしてはNSManagedObjectModelに対応。
#pre{{
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel_ != nil) {
return managedObjectModel_;
}
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"CoreData" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return managedObjectModel_;
}
}}
**Persistent store coordinator[#sebef938]
-Persistent storeとData modelを使ってManaged objectとを作り出す。
#pre{{
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSURL *storeURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"CoreData.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator_;
}
}}
-Managed object contextで管理される。
**Managed object and managed object context[#fbd24cdf]
-Managed ObjectsはDTO(みたいなもんか)。
-Key-Value Coding対応。
NSDate* t = [managedObject valueForKey:@"updateDate"]
-Managed Object ContextはManaged Objectsを管理する。Persistent store coordinatorを使う。
**Fetch requerst [#xd1bab7c]
-条件を駆使してオブジェクトを取り出す。
*データモデルエディタ [#h63a8f51]
**起動方法 [#y43d24aa]
.xcdatamodelをクリックすると起動する。
**エンティティ [#s15a1061]
-テーブルに該当。
-左上のペインで追加削除できる。
**プロパティ [#d76f1b07]
-テーブルのカラムに該当。
-選択されたテーブルのカラムが一覧表示される。
**属性 [#db5d984a]
-カラムの型に該当。
-選択されたカラムの属性が表示される。
*Fetch Results Controller [#wd025de2]
-NManagedObjectsを管理されているオブジェクトを表示したり削除したりするのを助けるcontroller。
-イベントが発生するとdelegateメソッドが呼び出されるのでそこでビューを更新したりする。