1

我有一个应用程序可以跟踪用户驾驶行程(路径)。我使用 Core Data 保存所有信息。

数据库结构:

路径 ->> 点

Point 包含 lat 和 long 值。

我所做的是,每次更新 CLLocationManager 时,我都会将该点添加到数组中。一旦用户到达路径的尽头,我就会遍历并将所有这些位置添加到数据库中。

我的问题是……这是解决这个问题的最好方法吗?我的两个选择是:

  1. 将所有位置添加到数组,然后将所有位置添加到核心数据。

  2. 每次更新 CLLocationManager 时,将其直接添加到核心数据中。

我不确定是否有一些访问/更改核心数据的最佳实践。我应该批量执行(for循环),以便我可以调用

if ([managedObjectContext save:&error]) {
   // handle save error
}

在 for 循环的末尾并保持全部压缩。

或者我应该在每次更新后调用 CLLocationManager 时简单地添加一个新点[managedObjectContext save:&error]

我对 Option1 的唯一担忧是,如果应用程序在记录路径时崩溃,则不会保存任何信息。

因此,使用 Option2 的一个好处是数据将在每次更新后保存,但我不确定如此频繁地访问核心数据是否是不好的做法。

非常感谢您花时间提供帮助。

4

1 回答 1

2

使用假定的NSLocationManager更新频率(最多每隔几秒),经常保存绝对没问题。此外,您的阵列会消耗越来越多的内存,这并不是真正必要的。

您仍然可以谨慎地执行此操作,例如,每 10 点保存一次。

此外,您也许应该保存applicationWillResignActive以防应用程序中断。

于 2012-08-01T08:35:01.377 回答