Как перебирать словарь, не зная ключей, получая при этом ключ и объект? - PullRequest
6 голосов
/ 17 июня 2010

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

Я помню, что была особая, причудливая форма быстрого перечисления, но забыл точный синтаксис.

Кто-нибудь?

Ответы [ 5 ]

8 голосов
/ 17 июня 2010

Я думаю, что вы хотите что-то вроде этого:

for (id key in dictionary) {
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}

Взято из здесь .

7 голосов
/ 18 сентября 2012

Это также хороший выбор, если вы любите блоки.

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

}]
1 голос
/ 17 июня 2010
for (id key in mydictionary) {
   id mything = [mydictionary objectForKey:key];
}
0 голосов
/ 02 июля 2013

Насколько мне известно, в то время, когда вы задавали вопрос, был только один способ обхода ключей и значений одновременно: CFDictionaryApplyFunction.

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

@ zekel имеет современный способ перебора словаря. Проголосуй за него!

0 голосов
/ 17 июня 2010

keyEnumerator возвращает объект, который позволяет перебирать все ключи в словаре. С здесь

...