1

こんにちは、私は iOS5 でいくつかのアプリを作成しましたが、今は CoreData に飛び込もうとしています。正しいアプローチは何ですか?多くのガイドは、プロジェクト作成ウィザードで開発者が「Use CoreData」を選択できる古い XCode バージョンを参照しています。そうすれば、NSManagedObjectContext への参照が自動的に取得されます。このオプションはもう存在しないようです。ならどうしよう?UIManagedDocument について読んだことがありますが、persistentStoreCoordinator、managedObjectModel、managedObjectContext との関係がわかりません。また、これをすべてRestKitで機能させる必要があるため、正しいアプローチについてさらに混乱が生じます。説明してくれる人、または正しい方向に向けてくれる人が必要です。ありがとう

4

2 に答える 2

1

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;
于 2012-11-19T10:35:53.000 に答える
1

ユーザー1170896、

Xcode 4.5 で master-detail プロジェクトを使用すると、Core Data オプションを選択して、そのボイラープレート コードをすべて取得できます。

アンドリュー

于 2012-11-17T15:44:09.367 に答える