Попытка отсортировать многомерный изменяемый массив с помощью одного (целого) объекта

#iphone #sorting #sdk #multidimensional-array

#iPhone #сортировка #sdk #многомерный массив

Вопрос:

У меня есть многомерный NSMutableArray, и я хочу отсортировать его по одному из объектов. Массив создается таким:

         [NSMutableArrayName addObjectsFromArray:[NSMutableArray arrayWithObjects:[NSMutableArray arrayWithObjects:name,[NSNumber numberWithInteger:x],nil],nil]];       
  

Я не могу найти способ отсортировать весь массив, используя значение второго объекта (целое число x).

Помощь, как всегда, приветствуется.

Ответ №1:

Это звучит как хороший аргумент для sortUsingComparator: . Вы используете это примерно так:

 [NSMutableArrayName sortUsingComparator:^NSComparisonResult(id o1, id o2){
    NSInteger a = [[o1 objectAtIndex:1] integerValue]; // Or however to extract the int from your array element
    NSInteger b = [[o2 objectAtIndex:1] integerValue];

    if (a < b) return NSOrderedAscending;
    if (a > b) return NSOrderedDescending;
    return NSOrderedSame;
}];
  

Если вы ориентируетесь на версию до iOS 4.0, вы можете выполнить почти то же самое, используя sortUsingFunction:context: и поместив содержимое блока в функцию в стиле C.

Комментарии:

1. Вау. Это действительно впечатляет и отлично работает. Спасибо Anomie