在用于核心数据栈生成的代码,保存上managedObjectContext问题被称为在applicationWillTerminate方法。这是在退出前处理上下文中所有未保存的对象。与xcode中生成的核心数据栈代码逻辑和核心数据样本代码
这也有保存任何临时对象的不良副作用。 (这个问题在苹果示例代码中也是可见的,如果您点击+在食谱示例代码中添加新食谱,然后按主页按钮以终止该应用程序,则下次启动该应用程序时会看到半分食谱对象)。
处理此问题的首选设计模式是什么?我可以想到以下几点。
- 对临时对象使用不同的暂存器managedObjectContext,当您决定真正保存时,然后在主managedObjectContext中推送副本。仅在applicationWillTerminate中的主managedObjectContext上调用保存。 (有没有简单,快捷的方式从一个managedObjectContext在新的上下文手动创建副本将对象移动到另一个分开?)
- 删除applicationWillTerminate保存,但要确保所有的对象都保存更改后立即。 (这可能并不容易,我有一个Tabbed应用程序,用户可能同时启动编辑操作)。
让我知道是否有更好的方式来处理这个问题。
这是绝对是更新更新的更好方法,因为CD可以完成集成更改的所有工作。 – siasl 2011-01-12 14:05:43
请参考addViewController中的注释:(AddViewController *)控制器didFinishWithSave:(BOOL)保存在CoreDataBooks示例的RootViewController.m中,以获取上述详细说明。 – siasl 2011-01-12 14:06:26