我使用CoreData来管理我的应用程序数据模型。我在编辑视图控制器中使用子托管对象上下文,这样我就可以保存或丢弃用户所做的更改。
我按如下方式创建子上下文:
NSManagedObjectContext* mainMoc = <my main context>;
NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init];
editMoc.parentContext = mainMoc;
如果用户点击“完成”按钮,我将按如下方式保存更改:
[editMoc save:&error]
如果用户点击"cancel“,我就丢弃editMoc上下文。
问题是:我在整个应用程序中都使用了状态保存和恢复,并且我希望保存带有更改的editMoc上下文,以便在应用程序进入后台时进行进一步的恢复。我不想将editMoc与mainMoc合并,因为用户还没有决定是保存还是放弃更改。
我尝试使用NSCoding协议来序列化editMoc,但是注册的对象不是以这种方式保存的。我还试图更改parentContext,但这抛出了一个异常。
我认为应该有一种很好的方法来完成上述任务,因为使用子上下文和状态保存是一种常见的做法。
我的项目运行在iOS 6.0及更高版本上。
发布于 2013-06-03 23:30:37
Core Data内部无法保存这些对象。但是,您可以向moc询问其所有未保存对象(-updatedObjects
、-insertedObjects
、-deletedObjects
),然后迭代它们并将它们单独保存到磁盘。我建议将它们保存为中间格式,如JSON或plists。
https://stackoverflow.com/questions/16898829
复制相似问题