2010-06-17 7 views

Antwort

6

denke ich, was Sie wollen so etwas wie dieses:

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

von here genommen.

+0

sieht aus wie die "normale Form" der schnellen Aufzählung. Die gleiche Sache, die ein Array verwendet, gibt ein tatsächliches Objekt zurück. Das ist wirklich wirklich nur der Schlüssel zurück, der dann verwendet werden kann, um auf den Wert zuzugreifen? macht Sinn. – dontWatchMyProfile

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

keyEnumerator gibt ein Objekt zurück, mit dem Sie die einzelnen Schlüssel im Wörterbuch durchlaufen können. Von here

6

Dies ist auch eine gute Wahl, wenn Sie Blöcke mögen.

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

}] 
+3

+1 Dies ist wahrscheinlich * viel * schneller als die "fastEnumeration" -Variante (da es CFDictionaryApplyFunction von Core Foundation verwenden kann). Es spart die teure Suche für jedes Element, da es einfach über die Buckets iterieren und Schlüssel und Wert übergeben kann. –

0

Mein Wissen zum Zeitpunkt, wenn Sie die Frage gestellt, es gab nur eine Möglichkeit, Schlüssel und Werte in der gleichen Zeit durchlaufen: CFDictionaryApplyFunction.

Die Verwendung dieser Core Foundation-Funktion beinhaltet einen hässlichen C-Funktionszeiger für den Körper der Schleife und eine Menge nicht weniger hässlichen, aber gebührenfreien Überbrückungscasting.

@zekel hat das modern way of iterating ein Wörterbuch. Stimme ihn ab!

+0

"enumerateKeysAndObjectsUsingBlock:" wurde übrigens in iOS 4 eingeführt, also vier Tage nachdem du diese Frage gestellt hast :) –

Verwandte Themen