Заказ NSMutableDictionary с несколькими ключами

У меня есть NSMutableDictionary с двумя ключами. Один для заголовков (например, «Тест») и один для расстояний (например, «200 миль»).

Как я могу заказать эти значения на ближайшем или дальнем расстоянии. Мне нужно, чтобы индексы значения названия и расстояния менялись, когда они упорядочены.

Таким образом, это будет обычная версия NSMutableDictionary :

 Titles: ( "Test1" "Test2" "Test3" ) Distances: ( "240" "43" "482" ) 

И заказанная версия (для ближайших расстояний):

 Titles: ( "Test2" "Test1" "Test3" ) Distances: ( "43" "240" "482" ) 

Я не могу не чувствовать, что вы хотите NSArray из NSDictionaries или NSArray пользовательских объектов. Этот дизайн кажется очень неудобным и создает дополнительную работу – потому что единственный реальный ответ, если вы структурируете свои данные таким образом, – это «Создать собственный API вокруг всего, что очень тщательно управляет этим инвариантом, а затем только когда-либо мутирует эту структуру данных через этот интерфейс «.

Поскольку @Chuck говорит, что массив пар является очевидной структурой, если сортировка этих двух массивов или их сортировка является ключевой операцией. Если, однако, это редкая операция, и есть очень веские причины, чтобы сохранить ее как словарь с двумя массивами, вы можете достичь своей цели следующим образом:

  1. Создайте новый массив (NSArray или простой C-массив) с тем же числом n элементов в качестве ваших массивов.
  2. Заполните этот массив целыми числами от 0 до ( n – 1)
  3. Пользовательский сортировка массива, упорядочивающего два значения на основе поиска значений в массиве Distances с одинаковыми индексами и их сравнения.
  4. Когда вы закончите, у вас есть массив индексов, являющийся перестановкой, которую вы хотите применить к вашим двум массивам.
  5. Перенесите оба массива.

Но массив пар будет проще …

Я бы сделал это следующим образом:

 NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST1", @"TITLE", [NSNumber numberWithInt:240], @"DISTANCE", nil]; NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST2", @"TITLE", [NSNumber numberWithInt:43], @"DISTANCE", nil]; NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST3", @"TITLE", [NSNumber numberWithInt:482], @"DISTANCE", nil]; NSSortDescriptor *distanceSort = [NSSortDescriptor sortDescriptorWithKey:@"DISTANCE" ascending:YES]; //Set 'NO' to order from biggest to lowest NSArray *sortedArrayOfDic = [[NSArray arrayWithObjects:dic1, dic2, dic3, nil] sortedArrayUsingDescriptors:[NSArray arrayWithObjects:distanceSort, nil]]; NSLog(@"%@", sortedArrayOfDict); 

Результатом будет массив словарей, отсортированных по расстояниям, например:

 "43", "TEST2" "240", "TEST1" "482", "TEST3" 
  • Тест Swift UI, как проверить, имеет ли ячейка изображение
  • Библиотека Xcode включена, но не найдена?
  • Проблемы с init NSItemProvider из строки
  • Как отправить изображения на Parse без использования запроса?
  • Изменения раскадровки не обновляются в симуляторе / iphone
  • Создание PJSIP для iphone-ошибки
  • Почему XCode 7.1 компилирует код каждый раз, когда я пишу код?
  • iOS тихие уведомления
  • Ошибка Xcode 7. Отсутствие необходимой архитектуры при построении
  • Можно ли получить тег ячейки в методе делегирования sizeForItemAtIndexPath для коллекции?
  • Неявное преобразование из Objective-C Указатель на int * не разрешен с помощью ARC
  • Interesting Posts

    Одно изображение с альфа-запаздыванием spritekit

    Добавление рекламных объявлений AdMob в дополнение к баннерам (IOS)

    Управление двумя табличными представлениями в одном классе

    iOS – функция выхода из системы

    Размер UIView не так ожидаемый

    Ограничения просмотров в пользовательском UITableViewCell, получающем сброс при повторном использовании ячеек

    Невозможно запустить приложение на iPhone симулятор внезапно

    Невозможно изменить из NSDate в стандартном шаблоне Master Detail

    Доступность хэширования для отпечатка IOS?

    Создайте объект NSManagedObject без сохранения его

    Утечка памяти при использовании NSJSONSerlialization JSONObjectWithData

    Swift: как планировать локальные уведомления с динамическим контентом

    Является ли Swift решением для «переноса приложения iOS на OSX»?

    массив содержит проблемы с объектом

    Как добавить ссылку в комментарий Xcode, чтобы открыть другой файл исходного кода?

    Давайте будем гением компьютера.