您可以使用配置。
[PersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:nil error:]
假设您希望拥有单个托管对象上下文、单个托管对象模型、单个持久性存储协调器,但有两个持久性存储,例如第一个是 SQLite 存储,第二个是内存中存储。
对于此设置,您创建两个配置,“SQLiteStore”用于 SQLite 存储,“InMemoryStore”用于内存存储。在 XCode 中(打开 .xcdatamodel 文件):
您会看到托管对象模型的可用配置列表。托管对象模型配置基本上是一组与字符串名称关联的实体描述。添加配置使用编辑器 -> 添加配置打开 .xcdatamodel 文件后,打开主菜单项,然后输入您喜欢的字符串名称。将要存储在第一个 SQLite 存储中的实体拖至“SQLiteStore”配置,将其他实体拖至“InMemoryStore”配置。
好的,就是这样,现在是时候更新您的代码了。转到创建持久性存储协调器并向其添加持久性存储的范围。唯一的变化是为它们指定配置:
...
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:yourManagedObjectModel];
NSURL storeURL = … // your store url
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"SQLiteStore" URL:storeURL options:nil error:&error])
{
NSLog(@"[Core Data error] Unresolved error %@, %@", error, [error userInfo]);
abort();
}
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:@"InMemoryStore" URL:nil options:nil error:&error])
{
NSLog(@"[Core Data error] Unresolved error %@, %@", error, [error userInfo]);
abort();
}
...
现在就是这样,您拖动到“InMemoryStore”配置的所有实体都将自动保存到内存中的持久存储中,“SQLiteStore”也是如此。之后您可能需要在设备/模拟器上重新安装应用程序。
以及快速简历:
- 在托管对象模型编辑器(.xcdatamodel 文件)中创建配置;
- 在代码中向持久存储协调器添加几个持久存储,并提供适当的配置名称。
检查此链接以获取更多信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/Articles/cdBasics.html#//apple_ref/doc/uid/TP40001650-SW4