Edit Diff Annotate History
Upload
List
Recent
Alias
Top
Help
管理オブジェクトコンテキストと永続用ストア : Edit
Last updated: Fri Mar 30 22:07:46 +0900 2007
管理オブジェクトモデルはデータモデルの設計を表したものです。 実行時には、''管理オブジェクトコンテキスト''を通してデータモデルにアクセスします。 このオブジェクト、つまりNSManagedObjectContextのインスタンスは、Core Dataオブジェクト群への入り口を提供し、Core Dataとアプリケーション、それを支える永続用ストアへの仲介を行います。 さらに管理オブジェクトコンテキストはデータオブジェクトを検証し、管理オブジェクトモデルのルールに従っていることを保証します。 また、アンドゥやリドゥの操作も行います。 <<CoreDataManagedObjectContext.jpg>> 管理オブジェクトコンテキストは''永続用ストアコーディネータ''も扱います。 このオブジェクト、NSPersistentStoreCoordinatorのインスタンスは、管理オブジェクトの定義を管理しており、ディスク上に記録されたデータモデルファイルへのアクセス方法を提供します。 <<CoreDataPersistentStoreCoordinator.jpg>> スクラッチからアプリケーションの開発を始めるのであれば、Xcodeが管理オブジェクトコンテキストにアクセスするための2種類のテンプレートを用意してくれます。 それぞれCocoaベースアプリケーションとCocoaドキュメントベースアプリケーションにあたります。 ''Core Dataアプリケーション''テンプレートを使ってプロジェクトを作ると、次のようなメッセージを送ることで管理オブジェクトコンテキストを取得することができます。 [[NSApp delegate] managedObjectContext]; ''Core Dataドキュメントベースアプリケーション''テンプレートを使ってプロジェクトを作ると、NSPersistentDocumentクラスのmanagedObjectContextメソッドを使ってコンテキストを取得することができます。 Core Dataを既存のアプリケーションの追加するなら、管理オブジェクトコンテキストの生成と設定が必要になります。 以下はその一例です。 NSURL *url = [NSURL fileURLWithPath:@"path/to/file.xml"]; NSArray *bundles = [NSArray arrayWithObject:[NSBundle mainBundle]]; NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:bundles]; NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; [coordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url error:&error]; context = [[NSManagedObjectContext alloc] initWithManagedObjectModel:model];