Лучший способ сортировки 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]];
Помните о назначении массиву