.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.14 2009

CoreData について (2)

Tasaki です。

前回、データベース使用に際して必要な準備をざっとご紹介しましたので、今回はそれらを1つずつ具体的に見ていきたいと思います。

今回は、管理オブジェクトモデル、永続ストアコーディネータ、管理オブジェクトコンテキストの作成について採りあげようと思います。
これらのうち、最も頻繁に目にすることになるのは最後に挙げた管理オブジェクトコンテキストでしょう。
残りの2つは、この管理オブジェクトコンテキストを作成する際に必要になもの、と考えておいてよさそうです。

それでは、具体的なコード例を以下に示します。
まず、いずれかのクラスにそれぞれのインスタンス変数を定義します。

// インタフェース部
NSManagedObjectModel *managedObjectModel;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
NSManagedObjectContext *managedObjectContext;

@property ( nonatomic, retain, readonly ) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property ( nonatomic, retain, readonly ) NSManagedObjectModel *managedObjectModel;
@property ( nonatomic, retain, readonly ) NSManagedObjectContext *managedObjectContext;

ここでは、それぞれのゲッタで初期化を行うようにしています。
なお、データベースは SQLite を使用するため、MyManagedData.sqlite というファイルを呼び出しています。
パスは、./data です。

// 管理オブジェクトモデルのゲッタメソッド
- ( NSManagedObjectModel *) managedObjectModel {
 if( managedObjectModel == nil ) {
  managedObjectModel = [[ NSManagedObjectModel mergedModelFromBundles: nil ] retain ];
 }
return managedObjectModel;
}

// 永続ストアコーディネータのゲッタメソッド
- ( NSPersistentStoreCoordinator *) persistentStoreCoordinator {
 if( persistentStoreCoordinator == nil ) {
  NSString *documentsDirectory = @"./data";
  persistentStoreCoordinator = [[ NSPersistentStoreCoordinator alloc ] initWithManagedObjectModel:[ self managedObjectModel ]];

  NSError *error = nil;
  NSURL *storeURL = [ NSURL fileURLWithPath:[ documentsDirectory stringByAppendingPathComponent: @"MyManagedData.sqlite" ]];
  [ persistentStoreCoordinator addPersistentStoreWithType: NSSQLiteStoreType configuration: nil URL: storeURL options: nil error: &error ];
  if( error != nil ) {
   // エラー処理
  }
 }
return persistentStoreCoordinator;
}

// 管理オブジェクトコンテキストのゲッタメソッド
- ( NSManagedObjectContext *) managedObjectContext {
 if( managedObjectContext == nil ) {
  NSPersistentStoreCoordinator *coordinator = [ self persistentStoreCoordinator ];
  if( coordinator != nil ) {
   managedObjectContext = [[ NSManagedObjectContext alloc ] init ];
   [ managedObjectContext setPersistentStoreCoordinator: coordinator ];
  }
 }
return managedObjectContext;
}

ここでは、エンティティを1つだけしか扱っていませんが、永続ストアコーディネータの addPersistentStoreType:configuration:URL:options:error: メソッドを呼んでファイルを追加していくだけで、簡単に複数のエンティティを扱えます。

残りの準備については、次回ご紹介する予定です。


関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/51-e7c7a3e1

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。