keysSortedByValueUsingComparator не дает правильно упорядоченного массива

У меня есть словарь, ключи которого состоят из NSNumber s. Я использую keysSortedByValueUsingComparator следующим образом:

 NSArray *sortedKeys = [self.platformDict keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) { return [(NSNumber*)obj2 compare:(NSNumber*)obj1]; }]; 

Однако вот результат:

 (lldb) po sortedKeys (NSArray *) $1 = 0x0704bd20 <__NSArrayI 0x704bd20>( 100000, 250000, 1000000, 500000, 3000000, 2000000, 5000000, 10000000 ) 

Это не по порядку. Это ошибка с реализацией метода или есть еще одна проблема?

3 Solutions collect form web for “keysSortedByValueUsingComparator не дает правильно упорядоченного массива”

Возможно, вы не понимаете, что keysSortedByValue:... метод keysSortedByValue:... Он не сортирует ключи (для этого вы просто сортируете массив, возвращаемый allKeys ), вместо этого он сортирует значения, а затем применяет их порядок к ключам.

Итак, скажем, у вас есть следующий словарь:

 {"Orange": 1, "Apple": 3, "Peach": 2} 

Результатом будет:

 "Orange", "Peach", "Apple" 

потому что это соответствует упорядоченному порядку значений (1, 2, 3).

Вы можете просто использовать sortedArrayUsingSelector:

 NSArray *sortedArray = [[self.PlatformDict allKeys] sortedArrayUsingSelector:@selector(compare:)] 

Замените внутреннюю часть блока следующим. Это скажет вам, является ли это проблемой с методом сравнения или чем-то еще.

  if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending; } if ([obj1 integerValue] < [obj2 integerValue]) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; 
  • Как отсортировать массив дат в порядке убывания
  • получать значения конкретного ключа в nsdictionary
  • Слабый объект в NSDictionary?
  • синтаксический анализ сложной структуры XML с использованием NSXMLParser
  • iOS: Почему я не могу установить значение nil в значение NSDictionary?
  • Как хранить несколько словарей в NSUserDefaults
  • NSDictionary быстрый KVC с нулевыми значениями
  • Как создать фиктивные данные JSON на клиенте в объекте C / iOS?
  • добавление словарного объекта в UITableViewCell
  • Сортировка отрицательных и положительных чисел в объективе c
  • NSDictionary сортируется по алфавиту
  • Interesting Posts

    В iOS7 можно ли добавить в систему пользовательскую клавиатуру? Или это все еще песочница?

    выпуск IOS 10.1 и Xcode 8

    Ткань: контрольная сессия

    Нажмите «Распознавание» для UIImageView в UITableViewCell

    Parse PFUser QueryWithPredicate Не работает

    Xcode Organizer не показывает мой пакет приложений на подключенном iPhone больше

    Правильно ли объявлять свойства в файле реализации? Если да, то в чем польза?

    удалить iOS PhoneGap / Cordova – Управление заставкой экрана

    Безопасна ли версия UIImageJPEGRepresentation ()?

    Как создать файл контроллера вида после создания нового контроллера представления?

    Получение уведомлений Push в фоновом режиме

    Есть ли ограничение на количество записей CKReferenced в CloudKit?

    Внешний вид навигационной панели не изменяется после первой настройки

    Как нарисовать дугу с изогнутым краем в iOS?

    WatchOS 2 (бета 5): watchAppInstalled возвращает false

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.