2013-12-18 92 views
1

我有一個每次調用位置更新委託時都會調用的函數。我相信這不是最好的方式去做這件事,因爲更新這往往是昂貴的。每隔10秒左右,有人能夠指引我進行更新的正確方向嗎?用新的位置數據更新核心數據(神奇記錄)

我當前的代碼:

TrackCoords *oTR= [TrackCoords MR_createEntity]; 
oTR.speed=[NSNumber numberWithInt:Location.speed*2.2369362920544]; 
oTR.lat=[NSNumber numberWithInt:Location.coordinate.latitude]; 
oTR.lon=[NSNumber numberWithInt:Location.coordinate.longitude]; 
oTR.elevation=[NSNumber numberWithInt:Location.altitude]; 

[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; 
+0

明確您需要保存的內容。這是一直在運行嗎?核心數據只有10秒時間? – Wain

+0

這將在整個錄製曲目或路徑時運行。我主要需要coords和其他一些信息重新創建曲目 – jdross

回答

1

你的代碼看起來不錯。就核心數據而言,它並不太常見。

如果您擔心「昂貴」,也就是電池耗盡等問題,請嘗試通過僅觀察重要的位置更改來減少發送給位置管理器代理的更新。

+0

謝謝,我更擔心丟失任何數據。我假設核心數據在後臺處理排隊。 – jdross

+0

CoreData不會在後臺執行任何操作,除非您告訴它。你在這裏的代碼看起來好像在主線程上運行(或者至少在委託回調方法的線程中運行)。我建議你使用[MagicalRecord saveWithBlock:] API在後臺做些東西。然後,你的排隊由GCD處理。 – casademora

+0

這當然是一種選擇。但是這個簡短的保存在主線程中幾乎不可見。 – Mundi