iPhone Core Data 应用程序会终止需要保存的数据库吗?
Posted
技术标签:
【中文标题】iPhone Core Data 应用程序会终止需要保存的数据库吗?【英文标题】:iPhone Core Data application will terminate save database required? 【发布时间】:2009-12-14 16:04:19 【问题描述】:我有一个允许您编辑某些百分比的应用程序,但是如果百分比加起来为 100,它只会让您提交这些更改。但是,由于 Core Data 模板包含应用程序中的保存代码,因此将终止。如果用户更改了某些内容然后退出了应用程序,那么该项目当然会被保存,即使它没有增加到 100%。
因此我只是决定注释掉应用程序中的保存将终止。我知道另一种选择是使用另一个上下文进行编辑,然后合并更改或设置我的上下文值,直到实际保存点。但是,我认为注释掉这一行没有任何害处,因为当用户单击保存按钮时,我会在应用程序中保存我想要的任何内容,所以我的问题是:应用程序上的保存是否将强制终止?这会产生什么可能的后果?需要注意的是,在注释了这行代码后,应用程序仍然可以正常工作(这是我所期望的)。
提前谢谢你。
-奥斯卡
【问题讨论】:
我相信您已经回答了自己的问题。顺便说一句,唯一有资格回答您问题的人就是您! 【参考方案1】:您可以随时保存。
但是,您永远不会知道应用何时终止。与更传统平台(例如桌面)上的应用程序不同,iPhoneOS 会随机终止您的应用程序(从应用程序的角度来看)。您将收到的唯一警告将是发送给应用程序委托的applicationWillTerminate
消息。如果您不在那里处理保存,那么您的用户很可能会在某个时候丢失数据。
我认为你应该重新考虑你的设计。听起来您正在将计算放入可以(1)在代码中的其他地方处理或(2)由瞬态属性处理的托管对象中。您不应该遇到无法立即保存托管对象的情况。这样做会使您的数据模型完全依赖于外部代码的内部完整性。这会导致维护、便携性和升级方面的问题。
【讨论】:
如果数据直到加起来100%才有效,那么不保存中间状态可能完全适合应用程序设计。 感谢您的回答。是的,我会重新设计,只在数据加起来达到 100% 时才修改 managedobject。 我决定为这些更改注册一个 undomanager,然后简单地在应用程序中终止执行此操作: while ([managedObjectContext.undoManager canUndo]) [managedObjectContext.undoManager undo];当然,如果数据增加到 100%,则 undomanager 设置为 nil。然后保存。效果很好,这会是一个好方法吗? 听起来不错,但我又不知道您的应用的详细信息。【参考方案2】:它不是强制保存应用程序将终止。您可以在您认为适合应用上下文时进行保存。
【讨论】:
以上是关于iPhone Core Data 应用程序会终止需要保存的数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据提供给 iPhone 应用程序以转换为 Core Data
iPhone 上是不是存在 Core Data?或者您将如何在 iPhone 上保存数据?