¿Cómo recorro todos los objetos en un NSMutableDictionary independientemente de las teclas?bucle a través de un NSMutableDictionary
Respuesta
Una forma estándar se vería así
for(id key in myDict) {
id value = [myDict objectForKey:key];
[value doStuff];
}
Puede utilizar [dict allValues]
para obtener una NSArray
de sus valores. Tenga en cuenta que no garantiza ningún orden entre llamadas.
Utilizaría este sobre la (clave de identificación en el diccionario), especialmente en un diccionario mutable, ya que este último arroja un desagradable error si el diccionario se modifica mientras se enumera. – sigsegv
"no garantiza" - esto se necesita con frecuencia (la mayoría de los idiomas tienen una versión del diccionario que garantiza el orden) - ¿* en la práctica * preserva el orden? – Adam
@ Adam En MacOS X, tenía un orden bastante confuso (no orden de inserción, no alfabético, nada), pero consistente entre llamadas. – jv42
puede utilizar
[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
si su sistema operativo es compatible con bloques de destino.
Otra forma es usar el enumerador de diccionarios. Aquí algunos ejemplos de código de Apple:
NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;
while ((value = [enumerator nextObject])) {
/* code that acts on the dictionary’s values */
}
- Para bucle simple, rápida enumeración es un poco más rápido que la basado en bloques de bucle
- Es más fácil hacer concurrente o enumeración con la enumeración basada en bloques que con revertir rápida enumeración Cuando bucle con NSDictionary se puede obtener la clave y el valor de un solo golpe con un empadronador basado en bloques, mientras que con la enumeración rápida usted tiene que utilizar la clave para recuperar el valor en un mensaje aparte enviar
en fas t enumeración
for(id key in myDictionary) {
id value = [myDictionary objectForKey:key];
// do something with key and obj
}
en los Bloques:
[myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
No es necesario asignar valor a una variable. Puede acceder directamente al myDict[key]
.
for(id key in myDict) {
NSLog(@"Key:%@ Value:%@", key, myDict[key]);
}
- 1. bucle a través de un directorio de
- 2. bucle a través de subcarpetas
- 3. Cómo agregar un objeto de NSMutableDictionary a NSMutableArray en un bucle
- 4. Agregar a NSDictionary entradas a NSMutableDictionary
- 5. Bucle a través de cuadros de texto
- 6. Bucle a través de la enumeración
- 7. php bucle a través de múltiples matrices
- 8. bucle a través de las filas de un DataTable
- 9. bucle a través de $ _GET resultados
- 10. C# bucle a través de una matriz
- 11. bucle a través de los valores enum
- 12. ¿Copiando el contenido de un NSMutableDictionary en otro NSMutableDictionary?
- 13. Ordenar un NSMutableDictionary
- 14. bucle a través de un objeto (árbol) recursivamente
- 15. Java, un bucle a través del conjunto de resultados
- 16. Bucle a través de un cursor explícito en Oracle
- 17. bucle PL/SQL a través del cursor
- 18. php: bucle a través matriz JSON
- 19. Subclase NSMutableDictionary
- 20. static NSMutableDictionary
- 21. bucle de python a través del archivo de entrada
- 22. añadir objetos de diferente nombre a través de bucle
- 23. Bucle a través de una serie de qplots
- 24. Cambiar un bucle foreach a un bucle Parallel.ForEach
- 25. Bucle a través de los valores pre definido
- 26. Wordpress NextGEN bucle a través de imágenes del álbum específico
- 27. en bucle a través de una columna en R
- 28. aumentando el tamaño de cadena a través del bucle
- 29. Bucle a través de la enumeración irregular en Delphi
- 30. Oracle PL/SQL: Bucle a través de nodos XmlType
Me he encontrado con más formas de hacer esto mal de lo que se puede sacudir un palo. ¡¡¡Gracias!!! – mpemburn
Si hubiera una forma de hacer algo como: 'for (id key, value in myDict)' eso sería perfecto. –
Gracias! Fácil de olvidar la sintaxis simple a veces. – abriggs