2009-12-14 53 views
0

我有一个应用程序,允许您编辑一些百分比,但它只会让您提交这些更改,如果百分比合计为100.但由于核心数据模板包含应用程序中的保存代码将终止。如果用户改变了某些东西然后退出应用程序,那么该项目当然会被保存,即使它没有增加到100%。iPhone核心数据应用程序将终止保存数据库所需?

因此,我只是决定注销掉应用程序中的保存将终止。我知道另一个选择是使用另一个上下文进行编辑,然后合并更改或设置我的上下文值直到实际保存点。然而,我没有看到任何伤害注释掉这一行,因为当用户点击保存按钮时,我在应用程序中保存了我想要的任何东西,所以我的问题是:应用程序的保存是否会终止强制?这可能会产生什么后果?注意到应用程序在评论这些行后仍能正常工作(这是我的预期),这一点很重要。

预先感谢您。

-Oscar

+1

我相信你已经回答了你自己的问题。顺便说一句,唯一有资格回答你的问题的人就是你! – KevinDTimm 2009-12-14 16:06:55

回答

1

你可以随时保存。

但是,您永远不会知道应用何时会终止。与传统平台(例如台式机)上的应用程序不同,iPhoneOS将随机终止您的应用程序(从应用程序的角度来看)。您将得到的唯一警告将是发送给应用程序代理的applicationWillTerminate消息。如果你没有在那里处理保存,那么很可能在某个时候,你的用户会丢失数据。

我认为你应该重新考虑你的设计。这听起来像是你将计算放入托管对象中,这可能(1)在代码中的其他位置处理,或者(2)由瞬态属性处理。您不应该有这样一种情况,即无法在帽子下面保存被管对象。这样做会使您的数据模型完全依赖外部代码来实现内部完整性。这会导致维护,可移植性和升级方面的问题。

+0

如果数据在合计达到100%时无效,则不保存中间状态可能完全适用于应用程序设计。 – Tim 2009-12-14 16:59:10

+0

谢谢你的回答。是的,我将重新设计,以便仅当数据总计达到100%时才会修改managedobject。 – 2009-12-14 21:20:51

+0

我决定注册一个UndoManager的这些变化,然后简单地在应用程序将终止执行此操作: 而([managedObjectContext.undoManager canUndo]) \t { \t \t [managedObjectContext.undoManager撤消]; \t} 然后,当然如果数据增加到100%,undomanager设置为零。 然后保存。它运作良好,这会是一个好方法吗? – 2009-12-15 16:06:17

0

它不是强制保存在应用程序将终止。只要您觉得适合应用的上下文,就可以保存。