Сортировать по расстоянию - PullRequest
5 голосов
/ 14 октября 2011

У меня есть набор словарей в массиве.Я отображаю эти данные в виде таблицы.В табличном представлении я вычисляю расстояние до каждого объекта и отображаю его в ячейке.

Данные должны быть в состоянии сортировать по возрастанию расстояния, очевидно, по месту расположения пользователя. Какой лучший способ приблизиться к этому?Я думал о том, чтобы выделить все словари и вставить расстояние, а затем освободить NSSortDescriptor, проблема в том, что я слишком ленив для этого.

Сейчас я просто перебираю все данные с помощью indexPath.row и отображаю их.

1 Ответ

13 голосов
/ 14 октября 2011

Вы можете легко сортировать с помощью компаратора 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); с Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...