通过距离iOS上当前位置的距离对实体进行排序的最佳策略是什么

时间:2011-10-09 05:57:34

标签: objective-c ios core-data

我需要显示按距离排序到该产品公司最近地址的产品列表。

我有一个像这样的电话数据结构:

产品<< - > 公司< - >>的地址

address实体具有纬度和经度的NSNumber字段。 我还有一个共享的Singleton,用于获取和存储当前的CLLocation

获取和排序这个的最佳策略是什么。

方法1

将一个只读distance属性添加到Address实体,该实体从lat / lng属性中创建一个CLLocation,并从共享单例中返回它与存储的currentLocation之间的计算距离。这可以让我使用NSPredicate进行排序和过滤。我想知道它是否会有性能成本。

方法2

只需将所有产品提取到数组中并循环遍历数组即可手动对其进行排序。

1 个答案:

答案 0 :(得分:0)

当我这样做时,我在单身人士中使用了这个:

- (NSNumber*) distanceToLocation:(CLLocationCoordinate2D) location{
    if (!self.isValidLocation) return nil;


    CLLocation *loc = [[CLLocation alloc] initWithLatitude:location.latitude longitude:location.longitude];    
    CLLocationDistance distance=[self.locationManager.location distanceFromLocation:loc];
    return [NSNumber numberWithDouble:distance];

}

然后地址实体的readonly属性调用它。