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