Obj / C: сортировка массива в произвольном порядке - PullRequest
5 голосов
/ 31 марта 2011

У меня есть массив NSMutableDictionaries, содержащий (среди прочего) ключ Location.Мне нужно отсортировать массив для ввода его в таблицу.Сверху должно быть N, ниже должно быть A, а ниже должно быть R. Итак, в сортировке: Как мне отсортировать массив в порядке: N - A - R?

РЕДАКТИРОВАТЬ: я могу заказать поглядя на две переменные, но я использую более 2 переменных (всего 7) ...

Спасибо,

1 Ответ

6 голосов
/ 31 марта 2011

Если ваш массив изменчив, вы можете отсортировать его с помощью методов -sortUsing .... Если нет, вы можете создать новый отсортированный массив с помощью методов -sortedArrayUsing .... Например, есть -sortUsingComparator: и -sortedArrayUsingComparator: методы, которые принимают блок компаратора в качестве параметра. Вам просто нужно предоставить блок, который сравнивает два объекта, используя ваш собственный порядок сортировки, например:

[myArray sortUsingComparator:^(id firstObject, id secondObject) {
    NSString *firstKey = [firstObject valueForKey:@"location"];
    NSString *secondKey = [secondObject valueForKey:@"location"];
    if ([firstKey stringEqual:@"N"] || [lastKey stringEqual:@"R"])
        return NSOrderedAscending;
    else if ([firstKey stringEqual:secondKey])
        return NSOrderedSame;
    else
        return NSOrderedDescending;
}];

Довольно подробное обсуждение сортировки массивов с примерами содержится в документе Темы программирования коллекций .

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