我有一个应用程序可以跟踪用户驾驶行程(路径)。我使用 Core Data 保存所有信息。
数据库结构:
路径 ->> 点
Point 包含 lat 和 long 值。
我所做的是,每次更新 CLLocationManager 时,我都会将该点添加到数组中。一旦用户到达路径的尽头,我就会遍历并将所有这些位置添加到数据库中。
我的问题是……这是解决这个问题的最好方法吗?我的两个选择是:
将所有位置添加到数组,然后将所有位置添加到核心数据。
每次更新 CLLocationManager 时,将其直接添加到核心数据中。
我不确定是否有一些访问/更改核心数据的最佳实践。我应该批量执行(for循环),以便我可以调用
if ([managedObjectContext save:&error]) {
// handle save error
}
在 for 循环的末尾并保持全部压缩。
或者我应该在每次更新后调用 CLLocationManager 时简单地添加一个新点[managedObjectContext save:&error]
。
我对 Option1 的唯一担忧是,如果应用程序在记录路径时崩溃,则不会保存任何信息。
因此,使用 Option2 的一个好处是数据将在每次更新后保存,但我不确定如此频繁地访问核心数据是否是不好的做法。
非常感谢您花时间提供帮助。