CoreDataの基礎 その1|CoreDataの基礎 その2|CoreDataの基礎 その3|CoreDataの基礎 その4
iphoneのデータ管理はSDK3.0になってからCoreDataが推奨となっている模様です。 もともと、AppleのWebObjectsってのを会社でやってて、「EO Modeler」と同じかな? SQLを書かなくてもデータモデルができると言うのは何となく想像はつきますが・・・。
まずデータオブジェクトを扱うのに出てくる「キーバリューコーディング」
NSString *name = [managedObject valueForKey:@"name"]; [managedObject setValue:@"Yoo" forKey:@"name"];
とデータストアから取り出したデータをkeyとvalueを取得、設定します。 CoreDataのデータストアタはデフォルトSQLiteです。 と言ってもSQLは原則書くことはありません。 ただ、データ設計に関してはリレーショナルデータベースの知識は多少必要かもしれません。
ちなみに、SQLiteのデータストアの場所をパーシステントストアと呼ぶようです。 CoreDataと仲介するオブジェクトはNSMnagedObjectContextです。 (WebObjectsだとEOEdtingContextにあたるものでしょうか?)
では実際にプロジェクトを作成してみます。
Window-based Applicationを選んで、Use Core Data For storageにチェックを入れて作成するだけです。
すると、Resourcesに.xcdatamodelファイルが作成されます。
ファイルを開くとエディターらしきものが開きます。 おお!見た目だけで便利そうすねw
このエディタの使い方はまた後で書く事にして、コーディングの方をみていきます。
Window-based Applicationの場合、ある程度の雛形で作成されますが、まずはヘッダーファイルからみていきます。
#import
#import
@interface SongAppDelegate : NSObject {
UIWindow *window;
@private
NSManagedObjectContext *managedObjectContext_;
NSManagedObjectModel *managedObjectModel_;
NSPersistentStoreCoordinator *persistentStoreCoordinator_;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (NSString *)applicationDocumentsDirectory;
@end
オブジェクトデータモデルのことで、モデルファイルでEntityを管理する。 .xdatamodelそのものぽいけど、ファイルタイプはmomdのようです。
NSManagedObjectContext(xdatamodel)から作成されるデータストレージ。 addPersistentStoreWithTypeで、データベースファイ、Data Storageの種類を選択することができる(SQLiteが一般的か?)
NSManagedObjectModel、NSPersistentStoreCoordinatorから取得したデータオブジェクトをメモリ内で管理する。 実際にデータを操作する場合は、NSManagedObjectContextを介してコーディングすることになる(であろう)。
managedObjectContext_、managedObjectModel_、persistentStoreCoordinator_を隠蔽化して、各getterを用意しています。
次は実装ファイルをみてきます。
CoreDataの基礎 その1|CoreDataの基礎 その2|CoreDataの基礎 その3|CoreDataの基礎 その4