0

假設我有1000個用於coreData中海拔和經度的條目。我想要做的這些海拔和經度reverseGeoCoding和保存結果早在coreData。基於下方關注我已決定把reverseGeoCode操作在後臺ReverseGeoCode並將結果保存在CoreData中

  1. ReverseGeoCode需要時間,當網絡連接速度很慢。
  2. 我們應該每分鐘只使用一個地理編碼請求。

我的問題是在以上類型的情況下更新coreData的最佳實踐是什麼? - 當在後臺輸入應用程序? (不要忘記限制backgroundTimeRemaining將可用) - 或在後臺線程時應用程序在前臺。

簡而言之,我想要每個座標reverseGeoCoded地址。請給我的方法,我應該遵循。

回答

1

我會建議爲此目的保留一個單獨的ManagedObjectContext。這將防止與其他CoreData任務發生鎖定問題,並允許您爲用戶的工作提供MOC。據推測,用戶不想僅僅因爲不相關的後臺任務已經完成而保存他們的工作,所以他們需要他們自己的MOC!

鑑於相對較慢的查找速度(1 /分鐘),我會說要繼續並在每次之後保存更改。

當應用程序在後臺時,你不能這樣做;您需要取消所有待處理的反向地理編碼請求,並在您回到前臺時恢復它們。但是我建議你在預先使用時使用後臺線程。

如果您需要在其他MOC中使用這些對象,通常的機制適用 - 發送通知或以其他方式讓他們知道,以便他們可以獲得新的通知。

+0

你說得對,我要試試:) –