Действительно ли словарь Objective C является заказанным контейнером?

На самом деле, все параметры являются необязательными в функциях JS. Нет предупреждения или ошибки, если вы пропустите параметр.

Вы можете установить значения по умолчанию, такие как

function throw_cat(dist){
  dist = typeof dist=='undefined' ? 20 : dist;
   //OR
  dist = dist || 20; //this will assign it to 20 if you pass 0 or another 'falsy' value, though. May be good if you expect a string. String '0' stays, '' or null assigns the default
  //etc...
  }
12
задан warren 30 October 2009 в 05:07
поделиться

3 ответа

Нет, NSDictionary не поддерживает порядок вставки своих ключей.

Если вам нужен словарь, который поддерживает порядок вставки, я бы предложил использовать Фреймворк CHDataStructures , который имеет класс CHOrderedDictionary (он является потомком NSMutableDictionary ). В документации для CHOrderedDictionary говорится:

Словарь, который перечисляет ключи в том порядке, в котором они вставлены.

Чтобы воспользоваться преимуществами упорядочения, предоставляются следующие дополнительные операции:

-firstKey

-lastKey

-keyAtIndex:

-reverseKeyEnumerator

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

21
ответ дан 2 December 2019 в 03:38
поделиться

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

4
ответ дан 2 December 2019 в 03:38
поделиться

Ключи в NSD словаре не хранятся в порядке, но вы можете получить их и отсортировать, E. G:

for (key in [[myDict allKeys] sortedArrayUsingSelector:@selector(compare:)])
...
12
ответ дан 2 December 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: