Лучший способ сортировки NSArray объектов NSDictionary?

Я пытаюсь сортировать массив словарей.

Мои словари имеют пару значений интереса, цены, популярности и т.д.

Любые предложения?

Ответ 1

Используйте NSSortDescriptor, как это.

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories = [stories sortedArrayUsingDescriptors:@[descriptor]];
recent = [stories copy];

stories - массив, который вы хотите отсортировать. recent - другой изменяемый массив, который имеет отсортированные значения словаря. Измените @"interest" на ключевое значение, которое нужно сортировать.

Все лучшее

Ответ 2

[array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

Я действительно не хочу разбивать его на несколько строк. Это уже достаточно просто для меня.

Ответ 3

Вы можете просто перейти от родителя к требуемому дочернему свойству. Напр.

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child"  ascending:YES];

Ответ 4

Обновление, sortUsingDescriptors теперь отсортированоArrayUsingDescriptors

Итак, его вроде:

items  = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

Ответ 5

Напишите функцию сортировки, которая сравнивает соответствующие поля в двух словарях. Если у вас есть эта версия, вы можете, например, использовать NSArray#sortedArrayUsingFunction:context: для сортировки вашего массива.

См. Справка класса NSArray

Ответ 6

array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

Помните о назначении массиву