2013-06-28 1 views
1

내 프로젝트 디자인은 두 개의 서로 다른 baseURLs와 함께 두 개의 서로 다른 RKObjectManagers 두 개의 완전히 분리 된 영구 저장소를 만들 저를 필요로 store1.sqlite 처리됩니다RestKit 두 개의 별도의 영구적 인 저장을 만드는 0.2X

관리자 2 :

1)이 별도의 데이터 모델을 : 내가 아는 것과,

그래서 store2.sqlite 다루는 것, 내가 만들 필요가 모델 1 & m ODEL 2

2) 2 개의 별도 관리 오브젝트 컨텍스트 : 컨텍스트 1 & 컨텍스트 2

3) 1 persistentStoreCoordinator

는 I 이전 이런 코어 데이터 (1 개 저장소)과 함께 작동하도록 설정 RestKit 0.2x하곤

관리자 1이 RKObjectManager

내 질문입니다

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]; 

은 다음과 같습니다 :

1) 정확히 2 개의 완전히 다른 영구 저장소를 올바르게 설정하려면이 코드를 어떻게 변경해야합니까?

2) (예 : store1과 관련된) 원하는 컨텍스트에 어떻게 액세스합니까? 보통 managedObjectStore1.mainQueueManagedObjectContext]을 사용합니까?

미리 감사드립니다.

p.s. applicationDidFinishLaunchingWithOptions에서 나는 NSFileManager으로 sqlite 파일을 삭제하고 새로운 깨끗한 것을 생성하여 저장소 2의 모든 데이터를 지워야 만한다. 왜냐하면 내 메모리 NSObjects을 사용하면 iPhone 메모리를 죽일 것이기 때문에 제 경우에는 수천 개의 레코드가 작동하기 때문입니다.

+0

두 개의 완전히 분리 된 RestKit/CoreData 스택이 필요한 이유는 무엇입니까? 단지 두 개의 지속적인 상점을 갖는 것으로 충분하지 않습니까? – Rivera

답변

1

영속적 인 저장소 코디네이터는 한 명 없으므로 둘이 있습니다. 코드를 복사하고 모든 세부 사항을 2 개 저장하고 현명하게 이름을 지정하고 현재 수행중인 managedObjectStore를 통해 MOC에 액세스하십시오. 약간의 복잡한 점은 RestKit에서 제공하는 기본 저장소를 사용할 수 없기 때문에 managedObjectStore에 액세스하는 방법뿐입니다. 컨텍스트를 저장하고 싱글 톤에 대한 공용 메서드를 제공하려면 고유 한 싱글 톤을 사용해야합니다.

+0

앱 전체에서 액세스 할 수 있도록 managedObjectStore를 AppDelegate의 속성으로 사용하는 것이 좋습니다. 그리고 코디네이터가 코디네이터에게 맡기는 것이 합리적이지 않습니다. – JAHelia

+0

앱 위임을 사용할 수 있지만 그 용도는 아닙니다. 많은 사람들이 그렇게하지만 나쁜 습관입니다. 서로 다른 코드 데이터 모델을 사용하는 경우 2 명의 코디네이터가 있어야합니다. – Wain