【问题标题】: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?
  • 这将在记录轨道或路径的整个过程中运行。我主要需要坐标和其他一些信息来重新创建轨道

标签: ios objective-c core-data magicalrecord


【解决方案1】:

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

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

【讨论】:

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