核心数据过度使用?

时间:2012-08-01 06:14:01

标签: objective-c ios database xcode core-data

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

db结构:

路径 - >>点

Point包含lat和long值。

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

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

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

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

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

    if ([managedObjectContext save:&error]) {
       // handle save error
    }
    
    在for循环结束时

    并将其全部压缩。

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

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

    因此使用Option2的一个好处是每次更新后都会保存数据,但我不确定是否经常访问核心数据是不好的做法。

    非常感谢您抽出宝贵时间提供帮助。

1 个答案:

答案 0 :(得分:2)

假设频率为NSLocationManager更新(每隔几秒最多),经常保存是绝对可以的。此外,你的阵列将占用越来越多的内存,这是不必要的。

你仍然可以谨慎数量,比如每10分钟一次。

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