2

我了解如何使用 CoreData,但我很困惑何时最好保存数据。当他们按下主页按钮时?在应用程序崩溃的情况下每次交互?

4

3 回答 3

5

保存数据是一个单独的调用的原因是,您可以批量处理多个较小的更改,这些更改包含一个较大的操作并一次保存,而不是在沿途的每个步骤中保存。

您应该在每次原子操作后保存数据,并且永远不要让提交的数据在任何重要的时间段内仅位于内存中。

每次用户提交对数据的更改时,他们都希望下次运行应用程序时数据会存在,因此确保数据存在是您的工作。

在您的用户提交对数据的更改后,您的应用程序可能会等待用户执行其他操作,因此请在用户决定下一步做什么时保存数据。

如果您等待在 中保存数据applicationDidEnterBackground,则无法保证它会被调用。

显然,并非所有数据都是关键的,例如,用户在表单上输入但尚未提交的数据并不关键。但是,任何提交的数据都是至关重要的。

于 2013-04-05T14:26:03.213 回答
0

我认为节省每次交互不是一个好主意(老实说,您的应用程序不应该在“每次”交互时崩溃;))。我只保存在我的应用程序中

- (void)applicationDidEnterBackground:(UIApplication *)application

事实上,关于崩溃,你是对的。但是如果无效数据导致崩溃怎么办?因此,您将在最坏的情况下重新加载数据,使其每次都崩溃。

但老实说,这只是一个有根据的猜测——我认为这取决于您的数据/应用程序的敏感程度

编辑:这个答案提供了类似的意见在崩溃之前保存核心数据上下文

但是我错过了一个非常好的观点:

每当用户执行关键操作时,您都应该保存

于 2013-04-05T14:14:55.803 回答
0

如果你在后台保存,你可以经常这样做而不会对用户体验造成太大的伤害。请记住,您可能需要更新 UI,这会产生影响(保存到主线程后合并将在主线程上完成)。
让您节省少量(少量对象),以免停止主线程。
它非常依赖于您的 CoreData 堆栈架构。
您将希望节省进入后台或用户重要数据/需求等关键时刻。

于 2013-04-05T14:19:20.877 回答