我的应用程序有时会将对象插入托管对象上下文中,这些对象不一定需要保存。例如,当我启动一个'添加实体'模式时,我创建一个托管对象并将其分配给模态。如果用户保存该模式,我保存上下文。如果他取消,我删除该对象,不需要保存。对NSManagedObjectContext的并发更改 - 如何以及何时保存
我现在已经引入了一个'导入'功能,切换到我的应用程序(使用URL方案)并添加一个实体。因为这些模式中的一个可能是开放的,所以在这一点上保存上下文是不安全的。为模式创建的瞬态对象将被保存,即使用户取消,也无法保证删除(从取消操作)将在以后保存 - 用户可能会退出应用程序。
同样,我不能简单地保存每当我的应用程序退出。如果该模式在此时打开,则临时对象将被错误地保存。
我正在寻找处理此架构的策略。我正在考虑一些“标记”解决方案,它允许我识别导入的实体。当用户用户退出应用程序时,我会检查上下文是否存在未保存的更改。如果是这样,我会过滤除导入的实体以外的所有内容,然后保存。我不知道这是可能的(选择性储蓄)还是一个好主意。
听起来像你的模态应该使用单独的上下文,这将允许您保存主要上下文,而不会意外地从模态中获取正在进行的更改。 –
伟大的文章在这里:http://www.cocoanetics.com/2012/07/multi-context-coredata/关于使用不同的scanarios包括你所描述的一个孩子上下文。 –
谢谢你们 - 我已经阅读过几次链接的博客,正在尝试实施。我有一些问题,但到目前为止,感觉就像是正确的道路。我将在工作时添加自己的答案,详细说明我的解决方案。 –