Сортировать массив по значениям подмассива в Objective C - PullRequest
3 голосов
/ 28 марта 2011

У меня есть массив из нескольких элементов в Objective C, где каждый элемент является подмассивом с 4 элементами. Мне нужно отсортировать основной массив на основе одного из значений подмассива.

Как я могу это сделать (быстро)?

Массив выглядит так:

    (
    Marly,
    "Avenida Caracas - Calle 51",
    "4.637467,-74.066799",
    a,
    "10070.563466"
),
    (
    "Calle 76",
    "Avenida Caracas - Calle 76",
    "4.662918,-74.061198",
    a,
    "7250.832506"
),
    (
    Profamilia,
    "Avenida Caracas - Calle 34",
    "4.621341,-74.06976",
    a,
    "11853.104432"
),
    (
    "Avenida 39",
    "Avenida Caracas - Calle 39",
    "4.626816,-74.068687",
    a,
    "11243.556349"
)

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

Вы можете использовать любое количество методов сортировки NSArray или NSMutableArray .Если вы работаете на iOS 4.0 или более поздней версии, возможно, наиболее простой версией будет «UsingComparator:».Это будет примерно так:

[array sortUsingComparator:^NSComparisonResult(id a, id b) {
    NSString *name1 = [a objectAtIndex:0];
    NSString *name2 = [b objectAtIndex:0];
    return [name1 localizedCaseInsensitiveCompare:name2];
}]
0 голосов
/ 03 апреля 2011

Хороший код Аноми! именно то, что я искал:)

но 2 вещи:

1 - это sortedArrayUsingComparator, функция для NSArray, а не sortUsingComparator

2 - не могли бы вы немного объяснить код:

^NSComparisonResult(id a, id b) {...}

как: что делает ^? из того, что я прочитал из Apple Doc, я предполагаю, что вы сделали, что написали функцию для сравнения (код между фигурными скобками), а затем напечатали ее в NSComparisonResult но почему объекты (id a, id b) предполагаются / используются? Есть ли общий способ сделать это для каждой функции / типа данных?

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