Как отсортировать массив, содержащий словари?
У меня есть массив, который содержит словари; так как же я могу отсортировать массив по значениям ключей словаря?
5 ответов:
Если каждый элемент массива является словарем, содержащим определенный ключ, то массив можно отсортировать с помощью дескриптора сортировки. Например, если каждый элемент является словарем, содержащим ключ под названием "name":
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors];
Другим способом достижения этого было бы использование метода
sortedArrayUsingComparator:
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]]; }];
Почему бы вам не использовать сортированный словарь, где свойство сортируемых элементов уже входит в структуру данных?
Пожалуйста, проверьте это здесь
Надеюсь, это поможет.
Вышеприведенный общий ответ Бавариуса помог мне.Просто хочу добавить еще кое-что.Если вы хотите отсортировать изменяемый массив, используйте что-то вроде приведенного ниже кода
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy];