Дизайн моего проекта требует, чтобы я создал два полностью отдельных постоянных хранилища с двумя разными RKObjectManagers
и двумя разными baseURLs
:
менеджер 1: будет иметь дело с store1.sqlite
менеджер 2: будет заниматься store2.sqlite
Итак, исходя из того, что я знаю, я должен создать:
1) 2 отдельные модели данных: модель 1 и модель 2
2) 2 отдельных контекста управляемых объектов: контекст 1 и контекст 2
3) 1 persistentStoreCoordinator
Раньше я настраивал 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]
?
заранее спасибо.
p.s. в applicationDidFinishLaunchingWithOptions
я должен стереть все данные из хранилища 2, просто удалив файл sqlite с помощью NSFileManager
и создав новый чистый, кто-то может спросить, зачем тогда сохранять данные? поскольку использование in-memory NSObjects
убьет память iPhone, в моем случае нужно работать с несколькими тысячами записей.