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

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

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

кого?

5 ответов


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

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

принято от здесь.


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

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

}]

for (id key in mydictionary) {
   id mything = [mydictionary objectForKey:key];
}

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


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

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

@zekel имеет современный способ перебора словарь. Голоса его!