92 votes

une boucle dans un NSMutableDictionary

Comment puis-je faire une boucle par tous les objets dans un NSMutableDictionary indépendamment de la remise des clés?

209voto

Henrik P. Hessel Points 22046

Une façon standard devrait ressembler à ceci

for(id key in myDict) {
    id value = [myDict objectForKey:key];
    [value doStuff];
}

29voto

Andrey Z. Points 3298

vous pouvez utiliser

[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
    // do something with key and obj
}];

si votre système d'exploitation prend en charge les blocs.

22voto

jv42 Points 6392

Vous pouvez utiliser [dict allValues] pour obtenir un NSArray de vos valeurs. Être conscient qu'il n'a pas de garantie pour toute commande passée entre les appels.

4voto

user3540599 Points 11
  1. Pour la boucle simple, rapide énumération est un peu plus rapide que la fonction de bloc de la boucle
  2. Il est plus facile de faire simultanées ou d'inverser l'énumération avec bloc de l'énumération de avec une rapide énumération Si la boucle avec NSDictionary vous pouvez obtenir la clé et la valeur d'un seul coup avec un bloc de base de l'énumérateur, alors qu'avec rapide énumération, vous devez utiliser la clé pour récupérer la valeur dans un autre message envoyer

dans rapide énumération

for(id key in myDictionary) {
   id value = [myDictionary objectForKey:key];
  // do something with key and obj
}

dans les Blocs :

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

   // do something with key and obj
  }];

2voto

Hendrik Points 411

Un autre moyen est d'utiliser les Dicts agent Recenseur. Voici un exemple de code à partir d'Apple:

NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;

while ((value = [enumerator nextObject])) {
    /* code that acts on the dictionary's values */
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X