用新的位置数据更新核心数据(神奇的记录)

Posted

技术标签:

【中文标题】用新的位置数据更新核心数据(神奇的记录)【英文标题】:Update core data (magical record) with new location data 【发布时间】:2013-12-18 18:22:20 【问题描述】:

我有一个函数,每次调用位置更新委托时都会调用它。我确信这不是解决此问题的最佳方法,因为更新它通常会很昂贵。有人能指出我每 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];

【问题讨论】:

清楚您需要保存的内容。这是一直在运行吗? 10 秒的时间段只适用于 Core Data? 这将在记录轨道或路径的整个过程中运行。我主要需要坐标和其他一些信息来重新创建轨道 【参考方案1】:

您的代码看起来不错。就核心数据而言,它并不太频繁。

如果您担心“昂贵”,以及电池消耗等方面的问题,请尝试通过仅观察显着的位置变化来减少发送给位置管理器代表的更新。

【讨论】:

谢谢,我更担心丢失任何数据。我假设核心数据在后台处理排队。 CoreData 不会在后台执行任何操作,除非您告诉它这样做。您在此处的代码看起来确实在主线程上运行(或至少在委托回调方法的线程中)。我建议您使用 [MagicalRecord saveWithBlock:] API 在后台执行操作。然后,您的排队由 GCD 处理。 这当然是一种选择。但是这个短暂的保存在主线程上应该很难被注意到。

以上是关于用新的位置数据更新核心数据(神奇的记录)的主要内容,如果未能解决你的问题,请参考以下文章

RestKit,核心数据,神奇的记录,大量数据和滞后的 UI

如何将查询更改为核心数据(神奇记录)中的获取结果?

自定义验证期间神奇记录核心数据中的上下文保存问题

更新记录集后,屏幕必须更新

用新的核心数据初始化 RestKit 的 RKPaginator

实体计数上的神奇记录 KVO