2013-12-18 58 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