在iOS应用程序中,我想使用NSPersistentStoreCoordinator和NSIncrementalStore子类,用于从REST API获取数据,也可以使用sqlite存储来保存到磁盘.但是,如果我将两种类型的持久性存储添加到我的协调器中,那么在我的托管对象上下文中调用save:没有任何效果.如果我只添加一个持久存储,而不是我的NSIcrementalStore子类的类型,那么保存按照预期工作.
有没有办法实现这个功能?
解决方法
我的经验最好的解决方案是拥有多个托管对象上下文,每个都有自己的模型.
但是,有一种方法来完成你想要的:
// create the store coordinator NSPersistentStoreCoordinator *storeCoordinator = [[NSPersistentStoreCoordinator alloc] init]; // create the first store NSPersistentStore *firstStore = [storeCoordinator addPersistentStoreWithType: NSIncrementalStore configuration:nil URL:urlToFirstStore options:optionsForFirstStore error:&error]; // now create the second one NSPersistentStore *secondStore = [storeCoordinator addPersistentStoreWithType:NSsqliteStore configuration:nil URL:urlToSecondStore options:optionsForSecondStore error:&error]; // Now you have two stores and one context NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init]; [context setPersistentStoreCoordinator:storeCoordinator]; // and you can assign your entities to different stores like this NSManagedObject *someObject = [[NSManagedObject alloc] initWithEntity:someEntity insertIntoManagedObjectContext:context]; // here the relevant part [context assignObject:someObject toPersistentStore:firstStore]; // or secondStore ..
您还应检查这些链接,以更好地了解Core Data的工作原理:
Core Data Programming Guide – Persistent Store Coordinator
SO: Two persistent stores for one managed object context – possible?
SO: Can two managed object context share one single persistent store coordinator?
还要查看TechZen在关于配置的第二个链接中的评论,并在这里阅读:
Core Data Programming Guide – Configurations
这里是一个很好的教程来管理两个对象上下文: