ReverseGeoCode和Save结果在CoreData中

时间:2013-01-06 19:48:07

标签: ios core-data background-process reverse-geocoding background-thread

假设我在coreData中有1000个高度和经度条目。我想对这些高度和经度进行reverseGeoCoding并将结果保存在coreData中。基于以下关注我决定将reverseGeoCode操作放在后台

  1. 当网络连接缓慢时,ReverseGeoCode需要时间。
  2. 我们每分钟只应使用一个地理编码请求。
  3. 我的问题是在上述类型的情况下更新coreData的最佳做法是什么? - 当申请进入后台时? (不要忘记有限的backgroundTimeRemaining将可用) - 或者在前台应用时在后台线程。

    简而言之,我想要reverseGeoCoded地址。请给我接近的方法。

1 个答案:

答案 0 :(得分:1)

我建议为此目的保留一个单独的ManagedObjectContext。这将防止与其他CoreData任务发生任何锁定问题,并允许您为用户的工作设置MOC。据推测,用户不想仅仅因为完成了不相关的后台任务而保存他们的工作,所以他们需要自己的MOC!

鉴于相对较慢的查找(1 /分钟),我会说要继续并在每次之后保存更改。

当应用程序在后台时,您无法执行此操作;您需要取消任何待处理的反向地理编码请求,并在返回前台时恢复它们。但是当你被预先考虑时,我建议使用后台线程。

如果您需要在其他MOC中使用这些对象,通常的机制适用 - 发送通知或以其他方式让他们知道,以便他们可以获得新的。