我有一个应用程序可以跟踪用户的驾驶行程(路径)。我使用 Core Data 保存所有信息。
数据库结构:
路径 ->> 点
点包含纬度和经度值。
我所做的是,每次更新 CLLocationManager 时,我都会将该点添加到数组中。一旦用户到达路径的末尾,我循环遍历并将所有这些位置添加到数据库中。
我的问题是...这是解决此问题的最佳方法吗?我的两个选择是:
将所有位置添加到数组,然后将所有位置添加到核心数据。
每次更新 CLLocationManager 时,将其直接添加到核心数据中。
我不确定是否有一些最佳实践来访问/更改核心数据。我是否应该批量执行(for 循环),以便我可以调用
if ([managedObjectContext save:&error]) {
// handle save error
}
在 for 循环的末尾并保持所有内容的压缩。
或者我应该在每次 CLLocationManager 更新调用 [managedObjectContext save:&error]
时简单地添加一个新点。
我对选项 1 唯一担心的是,如果应用程序在记录路径时崩溃,则不会保存任何信息。
因此,使用选项 2 的一个好处是每次更新后都会保存数据,但我不确定如此频繁地访问核心数据是否是一种不好的做法。
非常感谢您抽出宝贵时间提供帮助。
最佳答案
假定 NSLocationManager
更新的频率(最多每隔几秒),经常保存绝对没问题。此外,您的阵列将占用越来越多的内存,这并不是真正必要的。
您仍然可以谨慎地进行,例如,每 10 点保存一次。
此外,您或许应该保存在 applicationWillResignActive
中,以防应用程序中断。
关于objective-c - 核心数据过度使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11753512/