J'ai un nsdictionnaire et je veux itérer sur les objets. Mais en même temps, je dois connaître la clé du dictionnaire. P>
Je me souviens qu'il y avait une forme spéciale et fantaisie d'énumération rapide, mais j'ai oublié la syntaxe exacte. P>
Quelqu'un? P>
5 Réponses :
for (id key in mydictionary) { id mything = [mydictionary objectForKey:key]; }
Je pense que ce que vous voulez, c'est quelque chose comme ceci: pris de ici . P> p>
ressemble à la "forme normale" de l'énumération rapide. la même chose utilisant un tableau renvoie un objet réel. Donc, cela retourne vraiment la clé, ce qui peut ensuite être utilisé pour accéder à la valeur? logique.
C'est aussi un bon choix si vous aimez les blocs.
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { }]
+1 Ceci est probablement beaucoup i> plus rapide que la variante "Fastenumeration" (comme il peut utiliser le Coret Foundation's's CFDictionaryApplyFunction code>). Il enregistre la recherche chère pour chaque élément, car elle peut simplement itération sur les godets et passer à la fois la clé et la valeur.
À ma connaissance, à l'époque où vous avez posé la question, il n'y avait qu'une seule façon de traverser les clés et les valeurs en même temps: CFDictionaryApplyfunction code>
. P>
Utilisation de cette fonction de base de base implique un pointeur de fonction C laide pour le corps de la boucle et beaucoup de coulée non moins laidée et sans frais. P>
@zekel a le mode moderne d'itération un dictionnaire. Votez-le! P>
Au fait, énumérerKeysandObjectsUXELLOCK: code> a été introduit dans iOS 4, donc quatre jours après cette question :)