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