我了解如何使用 CoreData,但我很困惑何时最好保存数据。当他们按下主页按钮时?在应用程序崩溃的情况下每次交互?
3 回答
保存数据是一个单独的调用的原因是,您可以批量处理多个较小的更改,这些更改包含一个较大的操作并一次保存,而不是在沿途的每个步骤中保存。
您应该在每次原子操作后保存数据,并且永远不要让提交的数据在任何重要的时间段内仅位于内存中。
每次用户提交对数据的更改时,他们都希望下次运行应用程序时数据会存在,因此确保数据存在是您的工作。
在您的用户提交对数据的更改后,您的应用程序可能会等待用户执行其他操作,因此请在用户决定下一步做什么时保存数据。
如果您等待在 中保存数据applicationDidEnterBackground
,则无法保证它会被调用。
显然,并非所有数据都是关键的,例如,用户在表单上输入但尚未提交的数据并不关键。但是,任何提交的数据都是至关重要的。
我认为节省每次交互不是一个好主意(老实说,您的应用程序不应该在“每次”交互时崩溃;))。我只保存在我的应用程序中
- (void)applicationDidEnterBackground:(UIApplication *)application
事实上,关于崩溃,你是对的。但是如果无效数据导致崩溃怎么办?因此,您将在最坏的情况下重新加载数据,使其每次都崩溃。
但老实说,这只是一个有根据的猜测——我认为这取决于您的数据/应用程序的敏感程度
编辑:这个答案提供了类似的意见在崩溃之前保存核心数据上下文
但是我错过了一个非常好的观点:
每当用户执行关键操作时,您都应该保存
如果你在后台保存,你可以经常这样做而不会对用户体验造成太大的伤害。请记住,您可能需要更新 UI,这会产生影响(保存到主线程后合并将在主线程上完成)。
让您节省少量(少量对象),以免停止主线程。
它非常依赖于您的 CoreData 堆栈架构。
您将希望节省进入后台或用户重要数据/需求等关键时刻。