Упорядочить вывод NSMutableDictionary как ввод - PullRequest
3 голосов
/ 21 ноября 2011

как можно вывести значения словаря в порядке ввода.

Пример:

Мой вклад:

    [dicValue0 setObject:@"Start Date & Time" forKey:@"START_DATETIME"];
    [dicValue0 setObject:@"Specify End" forKey:@"SPECIFY_END"];
    [dicValue0 setObject:@"End Date & Time" forKey:@"END_DATETIME"];
    [dicValue0 setObject:@"Open End" forKey:@"END_OPEN"];

Выходы:

  • Дата и время начала
  • Дата и время окончания
  • Укажите Конец
  • Открытый конец

Я знаю, как работает словарь , но я хочу вывод в том же порядке, что и ввод!

Я могу написать цикл, который сортирует вывод по порядку ввода. Но если бы у меня было 10000+ значений, это не самый лучший и эффективный способ. Есть ли что-нибудь из яблока, которое помогает мне с этой проблемой?

Ответы [ 4 ]

5 голосов
/ 21 ноября 2011

Вам следует создать массив, который отслеживает порядок вставленных ключей, а затем выполнить итерацию по нему, чтобы извлечь значения из словаря. Нет встроенного способа иметь упорядоченный словарь в Foundation.

3 голосов
/ 21 ноября 2011

Я почти уверен, что словари не отслеживают порядок ввода.Как вы выводите словарь, просматриваете ключи или просто печатаете словарь?

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

2 голосов
/ 21 ноября 2011

Если вы хотите пример того, как создать упорядоченный словарь, проверьте здесь: http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html

1 голос
/ 21 ноября 2011

Вы можете проверить эту статью (включая исходный код) -

OrderedDictionary: создание подклассов кластера классов какао , Мэтт Галлахер

...