Я пытаюсь сортировать массив словарей.
Мои словари имеют пару значений интереса, цены, популярности и т.д.
Любые предложения?
Я пытаюсь сортировать массив словарей.
Мои словари имеют пару значений интереса, цены, популярности и т.д.
Любые предложения?
Используйте NSSortDescriptor
, как это.
NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories = [stories sortedArrayUsingDescriptors:@[descriptor]];
recent = [stories copy];
stories
- массив, который вы хотите отсортировать. recent
- другой изменяемый массив, который имеет отсортированные значения словаря. Измените @"interest"
на ключевое значение, которое нужно сортировать.
Все лучшее
[array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];
Я действительно не хочу разбивать его на несколько строк. Это уже достаточно просто для меня.
Вы можете просто перейти от родителя к требуемому дочернему свойству. Напр.
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child" ascending:YES];
Обновление, sortUsingDescriptors теперь отсортированоArrayUsingDescriptors
Итак, его вроде:
items = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
Напишите функцию сортировки, которая сравнивает соответствующие поля в двух словарях. Если у вас есть эта версия, вы можете, например, использовать NSArray#sortedArrayUsingFunction:context:
для сортировки вашего массива.
array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];
Помните о назначении массиву