2016-11-23 42 views
0

我有父母和孩子托管的上下文。我调用父管理方面,以保存其数据有两种方法:未存储XCode Simulator CoreData:在哪里调用保存托管上下文?

  • applicationWillTerminate
  • applicationDidEnterBackground

当我使用模拟器,只是点击上方“停止”按钮,无论是被调用并且上下文没有保存。在手机本身当然,通常使用应用程序时,一切都像魅力一样。如果我单击模拟器中的“Home”按钮并返回到应用程序然后终止,那么当然它会被保存,因为applicationDidEnterBackground被调用。

因此,如果模拟器是正确的,或者这是模拟器的错误,或者我错误地退出模拟器,我可能必须添加其他位置来保存背景上下文。你可以帮我吗?我是否需要改变任何东西,或者只是在模拟器中使用“技巧”来存储数据?

+0

我认为按下停止按钮只会在不保存应用状态的情况下杀死进程。 – Alex

+0

停止按钮被视为软故障,这种情况在实际设备中不可重现。 – kaushal

回答

2

将数据保存在这些方法中是可以的,但它们不应该是唯一的地方。事情可能会出错,超出你的控制范围,并且在用户数据丢失时最好不要丢失用户数据。例如,当您的应用程序在内存中存在大量未保存的更改时,手机的电池可能会突然死亡。实际上,你在模拟这种情况方面做得很好。

此外,您有更多未保存的更改,应用程序需要的内存就越多。如果您保存数据,则可以随时查看,以便核心数据可以清除其缓存,重新排列对象等。

只要存在不应丢失的新更改,就应该保存更改。究竟何时取决于您的应用程序,但它几乎肯定不仅仅是这两种方法。一种常见的模式是,当用户界面表示用户已完成某项任务时,应保存与该任务相关的数据。