Сортировка многомерного массива в target-c - PullRequest
2 голосов
/ 17 марта 2010

Я пытаюсь отсортировать многомерный массив в target-c, я знаю, что могу отсортировать одномерный массив, используя строку кода ниже:

NSArray *sortedArray = [someArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

Кажется, я не могу понять, как отсортировать двумерный массив, как показано ниже:

 ( ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY"),
    ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY"),
    ("SOME_URL", "SOME_STORY_TITLE", "SOME_CATEGORY") );

Если бы кто-нибудь мог предоставить мне код, который сортировал бы массив по SOME_CATEGORY, это было бы мне очень полезно.

Спасибо

Zen_Silence

1 Ответ

5 голосов
/ 17 марта 2010

Вам нужно использовать -sortedArrayUsingFunction:context: или sortedArrayUsingFunction:context:hint:.

static NSInteger order (id a, id b, void* context) {
    NSString* catA = [a lastObject];
    NSString* catB = [b lastObject];
    return [catA caseInsensitiveCompare:catB];
}
...
NSArray* sortedArray = [someArray sortedArrayUsingFunction:order context:NULL];

В качестве альтернативы, создать собственный класс для вашего внутреннего "массива" (который больше похож на запись) и реализовать -compareByCategory: метод на нем.

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