首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何持久化临时NSManagedObjectContext而不将其保存到父上下文中

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

Stack Overflow用户
提问于 2013-06-03 22:12:08
回答 1查看 621关注 0票数 2

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

我按如下方式创建子上下文:

代码语言:javascript
运行
复制
NSManagedObjectContext* mainMoc = <my main context>;
NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init];
editMoc.parentContext  = mainMoc;

如果用户点击“完成”按钮,我将按如下方式保存更改:

代码语言:javascript
运行
复制
[editMoc save:&error]

如果用户点击"cancel“,我就丢弃editMoc上下文。

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

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

我认为应该有一种很好的方法来完成上述任务,因为使用子上下文和状态保存是一种常见的做法。

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

EN

回答 1

Stack Overflow用户

发布于 2013-06-03 23:30:37

Core Data内部无法保存这些对象。但是,您可以向moc询问其所有未保存对象(-updatedObjects-insertedObjects-deletedObjects),然后迭代它们并将它们单独保存到磁盘。我建议将它们保存为中间格式,如JSON或plists。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16898829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档