我的项目设计要求我创建两个完全独立的持久存储,其中两个不同RKObjectManagers
,两个不同baseURLs
:
经理 1:将处理 store1.sqlite
经理 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 文件NSFileManager
并创建一个新的干净文件来擦除所有 store 2 数据,有人可能会问为什么要保留数据?因为使用内存NSObjects
会杀死 iPhone 内存,在我的情况下,有数千条记录可供使用。