Core data 如何持久化临时NSManagedObjectContext而不将其保存到父上下文

Core data 如何持久化临时NSManagedObjectContext而不将其保存到父上下文,core-data,nsmanagedobject,nsmanagedobjectcontext,nscoding,uikit-state-preservation,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,Nscoding,Uikit State Preservation,我使用CoreData管理我的应用程序数据模型。我在编辑视图控制器中使用子托管对象上下文,以便保存或放弃用户所做的更改 我创建子上下文如下所示: NSManagedObjectContext* mainMoc = <my main context>; NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init]; editMoc.parentContext = mainMoc; [editMoc s

我使用CoreData管理我的应用程序数据模型。我在编辑视图控制器中使用子托管对象上下文,以便保存或放弃用户所做的更改

我创建子上下文如下所示:

NSManagedObjectContext* mainMoc = <my main context>;
NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init];
editMoc.parentContext  = mainMoc;
[editMoc save:&error]
如果用户点击“取消”,我就放弃editMoc上下文

问题是: 我在整个应用程序中使用状态保存和恢复,并且我希望在应用程序转到后台时保存editMoc上下文和更改,以便进一步恢复。我不想将editMoc与mainMoc合并,因为用户还没有决定是保存还是放弃更改

我尝试使用NSCoding协议来序列化editMoc,但是注册的对象不是这样保存的。 我还试图更改parentContext,但这引发了一个异常

我相信应该有一个很好的方法来完成上述任务,因为使用儿童语境和国家保护是一种常见的做法


我的项目运行在iOS 6.0及更高版本上。

核心数据内部无法保存这些对象。但是,您可以做的是要求moc为其所有未保存的对象(
-updateobjects
-insertedObjects
-deletedObjects
)进行迭代,然后将它们分别保存到磁盘。我建议将它们保存为JSON或PLIST等中间格式