こんにちは、私は iOS5 でいくつかのアプリを作成しましたが、今は CoreData に飛び込もうとしています。正しいアプローチは何ですか?多くのガイドは、プロジェクト作成ウィザードで開発者が「Use CoreData」を選択できる古い XCode バージョンを参照しています。そうすれば、NSManagedObjectContext への参照が自動的に取得されます。このオプションはもう存在しないようです。ならどうしよう?UIManagedDocument について読んだことがありますが、persistentStoreCoordinator、managedObjectModel、managedObjectContext との関係がわかりません。また、これをすべてRestKitで機能させる必要があるため、正しいアプローチについてさらに混乱が生じます。説明してくれる人、または正しい方向に向けてくれる人が必要です。ありがとう
2 に答える
1か月前にRestKit/CoreDataの使用を開始しました。私は多くのチュートリアルを読んで、多かれ少なかれ快適になりました。私が読んだ最高のチュートリアルの1つは、http://mobile.tutsplus.com/tutorials/iphone/advanced-restkit-development_iphone-sdk/でした。
たとえばMaster-Detail-Viewプロジェクトテンプレートで新しいプロジェクトを作成する場合の[コアデータの使用]オプションは、RestKitを使用する場合には意味がありません。たとえば、NSPersistentStoreCoordinatorはRKManagedObjectStoreによって管理されます。NSManagedObjectContextは、バックグラウンドで自動的に作成されます。添付のサンプルコードを参照して、どのように機能するかを理解してください。
簡単なRestKitのセットアップは次のようになります。
objectManager = [RKObjectManager managerWithBaseURLString:@"http://x.y.z.a"];
NSString *databaseName = @"XYZ.sqlite";
managedObjectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName];
objectManager.objectStore = managedObjectStore;
RKManagedObjectMapping *customerMapping = [RKManagedObjectMapping mappingForClass:[Customer class] inManagedObjectStore:objectManager.objectStore];
[customerMapping mapKeyPathsToAttributes:@"Id", @"customerid", nil];
[customerMapping mapKeyPathsToAttributes:@"Name", @"name", nil];
[customerMapping mapKeyPathsToAttributes:@"Firstname", @"firstname", nil];
customerMapping.primaryKeyAttribute = @"customerid";
//[other mappings incl. relationships]
[objectManager.mappingProvider setObjectMapping:reservationMapping forResourcePathPattern:@"/api/xyz"];
コアデータに保存されているデータへのアクセスは、NSFetechedResultsControllerを介して可能です。
NSFetchedResultsController *fetchedResultsController;
fetchedResultsController = [Customer fetchAllSortedBy:@"firstname" ascending:YES withPredicate:nil groupBy:@"firstname"];
fetchedResultsController.delegate = self;
ユーザー1170896、
Xcode 4.5 で master-detail プロジェクトを使用すると、Core Data オプションを選択して、そのボイラープレート コードをすべて取得できます。
アンドリュー