按距离排序

时间:2011-10-14 14:56:30

标签: objective-c ios cocoa-touch

我在数组中有一组字典。我在tableview中显示这些数据。在tableview中,我计算每个对象的距离并在单元格中显示。

数据需要能够根据上升距离进行排序,显然每个用户位置的最佳方法是什么?我想要拆开所有字典并插入距离,然后放开NSSortDescriptor,问题是,我太懒了。

现在我只是使用indexPath.row循环遍历所有数据并显示它。

1 个答案:

答案 0 :(得分:13)

您可以使用基于块的比较器api轻松排序。

NSArray *rawData = [NSArray arrayWithContentsOfFile:pathDoc];

rawData = [rawData sortedArrayUsingComparator: ^(id a, id b) {

    CLLocationDistance dist_a= [[a objectsForKey:@"coordinate"] distanceFromLocation: userPosition];
    CLLocationDistance dist_b= [[b objectsForKey:@"coordinate"] distanceFromLocation: userPosition];
    if ( dist_a < dist_b ) {
        return NSOrderedAscending;
    } else if ( dist_a > dist_b) {
        return NSOrderedDescending;
    } else {
        return NSOrderedSame;
    }
}];

您应该很容易找到谷歌calculate_distance(user_position, a);的实施。