В каком порядке будет выполняться (NSString * ID в someNSDictionary)? - PullRequest
2 голосов
/ 07 сентября 2011
for(NSString * ID in someNSMutableDictionary) 
{
//do something
}

Теперь, будут ли идентификаторы отображаться в порядке их добавления в someNSMutableDictionary?

Ответы [ 2 ]

5 голосов
/ 07 сентября 2011

Нет, порядок ключей в someNSMutableDictionary не определен. Словари о парах ключ-значение, а не о порядке.

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

4 голосов
/ 07 сентября 2011

Нет, идентификаторы не отображаются в порядке их добавления или в любом отсортированном порядке, если только вы не принудительно сортируете ключи объекта NSDictionary.

Случайный порядок ключей - это метод минимизации времени, необходимого для доступа к значению по ключу, который обычно используется в большинстве реализаций словаря или хеш-таблицы.

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

for (NSString* key in [[someDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)])
{
    // do stuff
}
...