我在数组中有一组字典。我在表格 View 中显示此数据。在表格 View 中,我计算到每个对象的距离并将其显示在单元格中。

数据需要能够根据上升距离(显然是按用户位置)进行排序,什么是最好的方法?我想到将所有字典分开并插入距离,然后放开NSSortDescriptor,问题是,我为此太懒了。

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

最佳答案

您可以使用基于块的比较器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;
    }
}];

您应该可以通过Google轻松找到calculate_distance(user_position, a);的实现。

10-01 15:56
查看更多