Подтвердить что ты не робот

Как отсортировать массив, содержащий словари?

У меня есть массив, содержащий в нем словари; так как я могу сортировать массив в соответствии со значениями словарного ключа?

4b9b3361

Ответ 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)