【问题标题】:Core Data and Core Location核心数据和核心位置
【发布时间】:2011-01-11 16:17:36
【问题描述】:

我有一个具有纬度和经度属性的核心数据数据库。有没有办法使用核心位置的getDistanceFrom: 方法来找到距离 GPS 获得的CLLocation 最近的五个位置?我是否必须使用 Core Data 加载所有对象并解析它们,在每个对象上使用 getDistanceFrom: 还是有更简单的方法?

【问题讨论】:

    标签: iphone objective-c cocoa-touch core-data core-location


    【解决方案1】:

    您将不得不一个一个地遍历它们;据我所知,没有其他办法。

    但是,当您从核心数据中获取项目时,您可以通过使用边界框来提高效率 - 这将减少将返回的对象数量。

    即类似的东西

    float latMax = wantedLat + 1;
    float latMin = wantedLat - 1;
    float lngMax = wantedLng + 1;
    float lngMin = wantedLng - 1;
    NSPredicate *predicate = [NSPredicate
        predicateWithFormat:@"lat > %f and lat < %f and lng > %f and lng < %f",
        latMin, latMax, lngMin, lngMax];
    

    不过,根据您拥有的数据量以及数据间隔的紧密程度,您可能希望使用不同于 1 的数字!

    山姆

    PS 另外,我没有考虑经度换行的事实!

    【讨论】:

    • 谢谢你——我在我的应用程序中使用了类似的东西。但在我看来,现在两组 都是错误的方式!
    【解决方案2】:

    您不能使用 CoreData 来查找最近的对象,但可能希望通过使用边界框来缩小查询范围。要找到最近的物体,您可能更喜欢简单地使用纬度/经度的差异,这比计算实际距离要快得多。

    我也有类似的问题:

    CoreData: Find minimum of calculated property

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2014-07-30
      • 2011-02-20
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多