Sqlite 如何在使用一个ManagedObjectContext和PersistentStoreCoordinator与两个存储时保存数据
问题陈述 当试图将记录保存到读/写存储时,我的iPhone应用程序崩溃。读/写存储是分配给同一PersistentStoreCoordinator的两个SQLite存储之一。保存记录时一个明显的问题是PersistentStoreCoordinator不知道在哪个存储中保存数据(只是因为我不知道如何实现这一点) 首先,我将提供大局图,以确保我的方法是合理的。然后我将提供实现细节 背景 这是一个简化的示例,代表了我正在开发的实际应用程序的关键方面 种子数据 用户输入场景 当前实施情况 核心数据实现 数据存储和检索 当然,当用户查看选择列表以选择属性时,不应该有证据表明这些选择来自两个不同的商店 持久存储协调器设置 重要目标 请记住以下几点:Sqlite 如何在使用一个ManagedObjectContext和PersistentStoreCoordinator与两个存储时保存数据,sqlite,core-data,ios7,persistent-storage,managedobjectcontext,Sqlite,Core Data,Ios7,Persistent Storage,Managedobjectcontext,问题陈述 当试图将记录保存到读/写存储时,我的iPhone应用程序崩溃。读/写存储是分配给同一PersistentStoreCoordinator的两个SQLite存储之一。保存记录时一个明显的问题是PersistentStoreCoordinator不知道在哪个存储中保存数据(只是因为我不知道如何实现这一点) 首先,我将提供大局图,以确保我的方法是合理的。然后我将提供实现细节 背景 这是一个简化的示例,代表了我正在开发的实际应用程序的关键方面 种子数据 用户输入场景 当前实施情况 核心数
也许这里提出的解决方案接近我的需要。不幸的是,只有请求被处理。在NSManagedObjectContext类中,我没有看到类似于NSFetchRequest方法setAffectedStores的用于保存的方法。对于使用一个上下文/协调器和两个存储保存数据的核心问题,您需要的方法是:
addPersistentStore
添加用户可编辑存储时,保存对返回的NSPersistentStore
对象的引用NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"Vehicle" inManagedObjectContext:self.managedObjectContext];
[self.managedObjectContext assignObject:newObject toPersistentStore:userEditableStore];
这里的关键是在保存更改之前显式调用assignObject:toPersistentStore:
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"Vehicle" inManagedObjectContext:self.managedObjectContext];
[self.managedObjectContext assignObject:newObject toPersistentStore:userEditableStore];