У меня есть массив массивов. В дочерних массивах содержатся объекты. Как я могу сортировать эти дочерние массивы в родительском массиве, чтобы они отсортировались с первым массивом, который содержит большинство объектов до последнего дочернего массива, который содержит наименьшие объекты?Сортировка массива в соответствии с количеством дочерних массивов
1
A
ответ
4
Для этого случая достаточно, чтобы реализовать простой компаратор:
NSArray* sortedArray= [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
return [obj2 count] - [obj1 count];
}];
Дальнейшее объяснение
NSComparisonResult это перечисление:
enum {
NSOrderedAscending = -1,
NSOrderedSame, // 0
NSOrderedDescending // +1
};
Таким образом, вычитая счетчики двух массивов вы получаете правильный порядок, избегая писать обычные скучные if-then-els е. Для удобства чтения и не перепутать идеи новичкам добавить длинную версию здесь:
NSArray* sortedArray= [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
if([obj1 count] > [obj2 count])
return NSOrderedAscending;
if([obj1 count] < [obj2 count])
return NSOrderedDescending;
return NSOrderedSame;
}];
Alternative
используя тоже своего рода дескриптор с оператором сбора на @count элегантна:
NSSortDescriptor* descriptor= [NSSortDescriptor sortDescriptorWithKey: @"@count" ascending: NO];
NSArray* sortedArray= [array sortedArrayUsingDescriptors: @[ descriptor ]];
Смежные вопросы
- 1. Заполнять флажки в соответствии с количеством массивов
- 2. Сортировка многомерных массивов в PHP в соответствии с частью массива
- 3. Сортировка массива с минимальным количеством сравнений
- 4. Сортировка массива массивов в JULIA
- 5. заполнять текстовые поля со значениями в соответствии с количеством массивов
- 6. Сортировка массива массивов целочисленных массивов
- 7. Сортировка массива массивов с дельтой
- 8. Сортировка массива Список массивов
- 9. Сортировка массива массивов в Erlang
- 10. Сортировка массива в соответствии с заданным порядком
- 11. Сортировка массива в соответствии с первым массивом
- 12. Сортировка массива numpy в соответствии с тегами
- 13. сортировка массива в соответствии с датой
- 14. Сортировка 2d массива в соответствии с примерами
- 15. Сортировка массива объектов в соответствии с датой
- 16. Сортировка массива чисел с общим количеством цифр
- 17. Сортировка массива массивов в Ruby,
- 18. Сортировка массива PHP с использованием дочерних узлов?
- 19. Сортировка сортированных массивов в соответствии с модой Javascript
- 20. сортировка массивов - сортировка массива из внешних данных
- 21. Сортировка массивов в соответствии с элементами в одном массиве Swift
- 22. сортировка многомерных массивов php
- 23. Сортировка массива в соответствии с порядком другого массива
- 24. Сортировка массива в соответствии с набором значений из другого массива
- 25. Сортировка массива в соответствии с последовательностью другого массива
- 26. Сортировка массивов внутри массива, C#
- 27. Сортировка строкового массива в соответствии с числовым значением
- 28. Сортировка массива массивов по значению
- 29. Сортировка нескольких массивов в соответствии с одним массивом
- 30. Сортировка массива массивов с переменным числом элементов
Это также может быть сделано с помощью дескриптора сортировки сортировки – uchuugaka
Вам не нужен специальный. Просто '[NSSortDescriptor sortDescriptorWithKey: @" count "по возрастанию: YES]'. –
@KenThomases Ключ должен быть @ "@ count", и порядок не должен возрастать, он хочет, чтобы они отсортировались, начиная с более длинного. –