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; 
  • Разбор MKMapItem с iOS
  • Swift эквивалентен ``
  • Проверьте, нет ли NSDictionary
  • Создать индекс для UITableView из NSArray
  • static NSDictionary * const letterValues ​​= @ {...} в методе не компилируется
  • Сохранение значений enum в словаре
  • Что является ключом к моему NSDictionary
  • Получить определенную строку из NSMutableArray, используя NSDictionary
  • разбор NSJSONReadingAllowFragments
  • iOS object-c - Строка JSON для исключения NSDictionary
  • Как отображать изображение из RSS-канала
  • Interesting Posts

    Повторение местных уведомлений за определенные дни недели (Swift 3 IOS 10)

    Попытка экспортировать в csv, но как я могу реализовать делегат?

    Текст UITextField не отображается в центре

    iOS 7.1 Слайд для разблокировки текстовой анимации

    Слив батареи при использовании CoreLocation Значительный мониторинг местоположения и CoreBluetooth

    Исправить ширину элемента в UIStackView

    Выбор случайного перечисления в Objective-C

    Как передать UITableView IndexPath в UIButton @selector по параметрам в iOS?

    Координаты выборки текстур для визуализации спрайта

    Отключить одиночный вход (SSO) в Facebook IOS SDK

    Xcode 7 Размер архива большой

    «Этот пакет недействителен – расширение файла должно быть .zip», отправляющее сообщение в iTunes

    Удалить объект в базовых данных

    В ионном каркасе, как установить по умолчанию первую кнопку ионного сегмента в активном состоянии?

    Обновление до iOS 5

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