Comment faire une boucle sur tous les objets dans un NSMutableDictionary indépendamment des clés?en boucle à travers un NSMutableDictionary
Répondre
Une manière standard ressemblerait à ceci
for(id key in myDict) {
id value = [myDict objectForKey:key];
[value doStuff];
}
Vous pouvez utiliser [dict allValues]
pour obtenir une NSArray
de vos valeurs. Sachez qu'il ne garantit aucune commande entre les appels.
Je voudrais utiliser celui-ci sur la (clé d'id dans le dictionnaire), en particulier sur un dictionnaire mutable, car ce dernier jette une méchante erreur si le dictionnaire est modifié lors de l'énumération. – sigsegv
"ce n'est pas garanti" - c'est souvent nécessaire (la plupart des langues ont une version du dictionnaire qui garantit la commande) - est-ce que * dans la pratique * conserve la commande? – Adam
@Adam Sur MacOS X, j'avais un ordre plutôt mélangé (pas d'ordre d'insertion, pas d'ordre alphabétique, rien), mais cohérent entre les appels. – jv42
vous pouvez utiliser
[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
si votre système d'exploitation cible prend en charge les blocs.
Une autre façon est d'utiliser l'énumérateur Dicts. Voici quelques exemples de code d'Apple:
NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;
while ((value = [enumerator nextObject])) {
/* code that acts on the dictionary’s values */
}
- Pour boucle simple, énumération rapide est un peu plus rapide que la boucle à base de blocs
- Il est plus facile de faire de l'énumération simultanée ou inverse avec énumération par blocs que par énumération rapide Lorsque boucle avec NSDictionary vous pouvez obtenir la clé et la valeur d'un seul coup avec un recenseur à base de blocs, alors que l'énumération rapide, vous devez utiliser la clé pour récupérer la valeur dans un message séparé envoyer
dans fas énumération t
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
}];
Vous n'avez pas besoin d'attribuer une valeur à une variable. Vous pouvez y accéder directement avec myDict[key]
.
for(id key in myDict) {
NSLog(@"Key:%@ Value:%@", key, myDict[key]);
}
- 1. Aide en boucle à travers un XML en C#
- 2. PHP boucle à travers un tableau multidimensionnel
- 3. Boucle à travers objet SimpleXml en php
- 4. en boucle à travers le tableau JSON
- 5. boucle à travers un tableau numérique json?
- 6. En boucle à travers tous les UITextFields dans un UITableView
- 7. Mise en boucle d'un tableau à travers un deuxième tableau
- 8. Tapestry boucle à travers hashmap
- 9. en boucle à travers une colonne en R
- 10. boucle à travers un objet qui contient un objet php
- 11. Boucle à travers une carte avec JSTL
- 12. correctement boucle à travers JSON avec jQuery
- 13. boucle à travers ensemble d'éléments dans jquery
- 14. jsonp boucle à travers les données
- 15. Boucle JQuery à travers un tableau bidimensionnel d'éléments
- 16. liste à travers le fichier en utilisant une boucle while
- 17. en boucle à travers les lignes d'un particulier DataTable
- 18. Perl: boucle à travers un fichier et le remplacer
- 19. question jQuery sur la boucle à travers un réseau
- 20. JQuery en boucle à travers chaque ligne de la table
- 21. boucle à travers un dossier d'images dans une application WPF
- 22. jQuery FadeIn/FadeOut, boucle à travers un tableau
- 23. Boucle à travers les dépendances de cellule
- 24. jQuery: boucle à travers des objets imbriqués
- 25. Magento boucle à travers les pages
- 26. comment faire une boucle à travers nsfetchedresultcontroller
- 27. boucle à travers deux variable dans Haskell
- 28. comment boucle à travers ce tableau en php
- 29. Boucle à travers une propriétés d'objets en C#
- 30. Boucle à travers un côté du client du répéteur
J'ai rencontré plus de façons de faire ce mal que vous pouvez secouer un bâton. Je vous remercie!!! – mpemburn
Si seulement il y avait une façon de faire quelque chose comme: 'pour (id clé, valeur dans myDict)' ce serait parfait. –
Merci! Facile d'oublier la syntaxe simple parfois. – abriggs