0

coreData に高度と経度のエントリが 1000 あるとします。これらの高度と経度に対してreverseGeoCodingを実行し、結果をcoreDataに保存したい.以下の懸念に基づいて、reverseGeoCode操作をバックグラウンドで実行することにしました

  1. ネットワーク接続が遅いと、ReverseGeoCode に時間がかかります。
  2. 1 分あたり 1 つのジオコード リクエストのみを使用する必要があります。

私の質問は、上記のタイプの状況でcoreDataを更新するベストプラクティスは何ですか? - アプリケーションがバックグラウンドに入るときは? (制限された backgroundTimeRemaining が利用可能になることを忘れないでください) - または、アプリケーションがフォアグラウンドである場合はバックグラウンド スレッドで。

要するに、各座標について、reverseGeoCoded アドレスが必要です。私が従うべきアプローチのために与えてください。

4

1 に答える 1

1

この目的のために予約された別の ManagedObjectContext をお勧めします。これにより、他の CoreData タスクとのロックの問題が回避され、ユーザーの作業用に MOC を持つことができます。おそらく、関係のないバックグラウンド タスクが完了したという理由だけで、ユーザーは自分の作業を保存したくないので、独自の MOC が必要です。

ルックアップが比較的遅い (1 分に 1 回) ことを考えると、それぞれの後に先に進み、saveChanges を実行することをお勧めします。

アプリケーションがバックグラウンドにあるときは、これを行うことはできません。保留中のリバース ジオコード リクエストをキャンセルし、フォアグラウンドに戻ったときに再開する必要があります。ただし、フォアグラウンドの場合はバックグラウンド スレッドを使用することをお勧めします。

他の MOC でこれらのオブジェクトを使用する必要がある場合は、通常のメカニズムが適用されます。通知を送信するか、別の方法で通知して、新しい MOC を取得できるようにします。

于 2013-01-06T20:14:11.060 に答える