旅行(パス)を運転しているユーザーを追跡するアプリがあります。CoreDataを使用してすべての情報を保存します。
db構造:
パス->>ポイント
ポイントにはlat値とlong値が含まれます。
私がしていることは、CLLocationManagerが更新されるたびに、そのポイントを配列に追加することです。ユーザーがパスの最後に到達したら、ループしてそれらすべての場所をデータベースに追加します。
私の質問は...これはこれを行うための最良の方法ですか?私の2つのオプションは次のとおりです。
すべての場所をアレイに追加してから、すべての場所をコアデータに追加します。
CLLocationManagerが更新されるたびに、それをコアデータに直接追加します。
コアデータにアクセス/変更するためのベストプラクティスがあるかどうかはわかりません。まとめて(forループで)実行する必要があります。
if ([managedObjectContext save:&error]) {
// handle save error
}
forループの最後で、すべてを凝縮したままにします。
または、CLLocationManagerが更新される[managedObjectContext save:&error]
たびに、更新のたびに新しいポイントを追加する必要があります。
Option1に関する唯一の懸念は、パスの記録中にアプリがクラッシュした場合、情報が保存されないことです。
したがって、Option2を使用する利点は、更新のたびにデータが保存されることですが、コアデータにこれほど頻繁にアクセスすることが悪い習慣であるかどうかはわかりません。
お時間を割いていただき、誠にありがとうございます。