0

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

  1. ReverseGeoCode 在网络连接缓慢时需要一些时间。
  2. 我们应该每分钟只使用一个地理编码请求。

我的问题是在上述情况下更新 coreData 的最佳做法是什么?- 当应用程序进入后台?(不要忘记有限的 backgroundTimeRemaining 将可用) - 或者在前台应用程序时在后台线程上。

简而言之,对于每个坐标,我想要 reverseGeoCoded 地址。请给出我应该遵循的方法。

4

1 回答 1

1

我建议为此目的保留一个单独的 ManagedObjectContext。这将防止其他 CoreData 任务的任何锁定问题,并允许您为用户的工作拥有一个 MOC。想必用户并不想仅仅因为一个无关的后台任务完成就保存他们的工作,所以他们需要自己的 MOC!

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

当应用程序在后台时,您不能这样做;您需要取消任何未决的反向地理编码请求,并在您回到前台时恢复它们。但是我建议您在前台使用后台线程。

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

于 2013-01-06T20:14:11.060 回答