Зацикливание в NSMutableDictionary

Как я прокручиваю все объекты в NSMutableDictionary независимо от ключей?

Ответ 1

Стандартный способ будет выглядеть следующим образом:

for(id key in myDict) {
    id value = [myDict objectForKey:key];
    [value doStuff];
}

Ответ 2

вы можете использовать

[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
    // do something with key and obj
}];

если ваша целевая ОС поддерживает блоки.

Ответ 3

Вы можете использовать [dict allValues], чтобы получить NSArray ваших значений. Имейте в виду, что он не гарантирует никакого порядка между вызовами.

Ответ 4

Вам не нужно присваивать значение переменной. Вы можете получить к нему доступ непосредственно с помощью myDict[key].

    for(id key in myDict) {
        NSLog(@"Key:%@ Value:%@", key, myDict[key]);
    }

Ответ 5

  • Для простого цикла быстрое перечисление немного быстрее, чем цикл на основе блоков
  • Легче выполнять параллельное или обратное перечисление с помощью блочного перечисления, чем при быстром перечислении При циклизации с NSDictionary вы можете получить ключ и значение в одном ударе с помощью блока-перечислителя, тогда как при быстром перечислении вы должны использовать ключ для извлечения значения в отдельном сообщении.

в быстром перечислении

for(id key in myDictionary) {
   id value = [myDictionary objectForKey:key];
  // do something with key and obj
}

в блоках:

[myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

   // do something with key and obj
  }];

Ответ 6

Другой способ - использовать Dicts Enumerator. Вот пример кода от Apple:

NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;

while ((value = [enumerator nextObject])) {
    /* code that acts on the dictionary’s values */
}