Как заказать NSMutableArray с NSMutableArray внутри - PullRequest
0 голосов
/ 22 августа 2011

Мне нужно отсортировать массив с массивом внутри, что-то вроде этого:

 NSMutableArray * array_example = [[NSMutableArray alloc] init];

 [array_example addObject:[NSMutableArray arrayWithObjects:
                            string_1,
                            string_2,
                            string_3,
                            nil]
 ];

как мне упорядочить этот массив по полю "string_1" массива ???Любая идея, как я могу это сделать?

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Для iOS 4 и более поздних версий это легко сделать с помощью блока компаратора :

[array_example sortUsingComparator:^(NSArray *o1, NSArray *o2) {
    return (NSComparisonResult)[[o1 objectAtIndex:0] compare:[o2 objectAtIndex:0]];
}];

Если вам интересно, как работают блоки, вы можете взглянуть на Apple Краткое практическое руководство по блокам .

Если вы хотите поддерживать iOS 3.x, вам придется использовать пользовательскую функцию сравнения:

NSComparisonResult compareArrayFirstElement(NSArray *o1, NSArray *o2) {
    return [[o1 objectAtIndex:0] compare:[o2 objectAtIndex:0]];
}

, а затемиспользование:

[array_example sortUsingFunction:compareArrayFirstElement context:nil];
1 голос
/ 22 августа 2011

Вы можете зациклить объекты массива и вызвать sortedArrayUsingSelector для каждого вложенного массива, а затем replaceObjectAtIndex: withObject для внедрения обратно в исходный массив

...