1

私のプロジェクト設計では、2 つの異なる 2 つの異なる 2 つの完全に別個の永続ストアを作成する必要がありRKObjectManagersますbaseURLs

manager 1 : store1.sqlite を処理します

manager 2: store2.sqlite を処理します

だから、私が知っていることから、私は作成しなければなりません:

1) 2 つの個別のデータ モデル: モデル 1 とモデル 2

2) 2 つの個別の管理対象オブジェクト コンテキスト: コンテキスト 1 とコンテキスト 2

3) 1persistentStoreCoordinator

以前は、RestKit 0.2x次のようなコア データ (1 ストア) を操作するようにセットアップしていました。

  NSError *error = nil;    
NSURL *modelURL1 = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"store1" ofType:@"momd"]];
NSManagedObjectModel *managedObjectModel1 = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL1] mutableCopy];
RKManagedObjectStore *managedObjectStore1 = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel1];
[managedObjectStore1 createPersistentStoreCoordinator];
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store1.sqlite"];
NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error];
  if (error) {
NSLog(@"unresolved error %@, %@", error, [error userInfo]);
abort();
 }
[managedObjectStore1 createManagedObjectContexts];
manager1.managedObjectStore = managedObjectStore1 ;

managedObjectStore1.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore1.mainQueueManagedObjectContext];

ここで、manager1 はRKObjectManager

私の質問は次のとおりです。

1) 2 つの完全に別個の永続ストアを正しくセットアップするには、このコードにどのような変更を加える必要がありますか?

2) (store1 など) に関連する目的のコンテキストにアクセスするにはどうすればよいmanagedObjectStore1.mainQueueManagedObjectContext]ですか?

前もって感謝します。

psでapplicationDidFinishLaunchingWithOptions、sqliteファイルを削除して新しいクリーンファイルを作成するだけで、ストア2のデータをすべて消去するNSFileManager必要があります.なぜデータを永続化するのですか? インメモリを使用するNSObjectsと iPhone のメモリが失われるため、私の場合は数千のレコードを処理する必要があります。

4

1 に答える 1

1

永続的なストア コーディネーターは 1 人ではなく、2 人です。コードをコピーして、すべての詳細の 2 つのストアを用意し、適切な名前を付けて、現在行っているように適切な managedObjectStore を介して MOC にアクセスするだけです。現在、RestKit が提供するデフォルトのストレージを使用できないため、わずかに複雑なのは managedObjectStore にアクセスする方法だけです。独自のシングルトンを使用してコンテキストを保存し、シングルトンでパブリック メソッドを提供する必要があります。

于 2013-06-28T07:07:15.813 に答える