Как я прокручиваю все объекты в 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 */
}