objective c - objective - bucle a través de un NSMutableDictionary
nsdictionary to object swift (6)
- Para bucle simple, la enumeración rápida es un poco más rápida que el bucle basado en bloques
- Es más fácil hacer una enumeración concurrente o inversa con una enumeración basada en bloques que con una enumeración rápida. Al realizar un bucle con NSDictionary puede obtener la clave y el valor en un acierto con un enumerador basado en bloques, mientras que con la enumeración rápida debe usar la clave para recuperar el valor en un mensaje de envío separado
en enumeración rápida
for(id key in myDictionary) {
id value = [myDictionary objectForKey:key];
// do something with key and obj
}
en Bloques:
[myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
¿Cómo recorro todos los objetos en un NSMutableDictionary independientemente de las claves?
No necesita asignar valor a una variable. Puede acceder a él directamente con myDict[key]
.
for(id key in myDict) {
NSLog(@"Key:%@ Value:%@", key, myDict[key]);
}
Otra forma es usar el Dicts Enumerator. Aquí hay un código de muestra de Apple:
NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;
while ((value = [enumerator nextObject])) {
/* code that acts on the dictionary’s values */
}
Puede usar [dict allValues]
para obtener un NSArray
de sus valores. Tenga en cuenta que no garantiza ningún orden entre llamadas.
Una forma estándar se vería así
for(id key in myDict) {
id value = [myDict objectForKey:key];
[value doStuff];
}
puedes usar
[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
si su sistema operativo objetivo admite bloques.