para cada bucle en Objective-C para acceder al diccionario NSMutable
Tengo algunas dificultades para acceder a claves y valores de diccionario mutables en Objective-C.
Supongamos que tengo esto:
NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
Puedo configurar claves y valores. Ahora, solo quiero acceder a cada clave y valor, pero no sé la cantidad de claves configuradas.
En PHP es muy fácil, algo como lo siguiente:
foreach ($xyz as $key => $value)
¿Cómo es posible en Objective-C?
for (NSString* key in xyz) {
id value = xyz[key];
// do stuff
}
Esto funciona para todas las clases que cumplen con el protocolo NSFastEnumeration (disponible en 10.5+ e iOS), aunque NSDictionary
es una de las pocas colecciones que le permite enumerar claves en lugar de valores. Le sugiero que lea sobre la enumeración rápida en el tema de programación de colecciones .
Ah, debo agregar, sin embargo, que NUNCA debes modificar una colección mientras la enumeras.
Simplemente para no dejar de lado la opción 10.6+ para enumerar claves y valores usando bloques...
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop) {
NSLog(@"%@ = %@", key, object);
}];
Si desea que las acciones sucedan simultáneamente:
[dict enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id key, id object, BOOL *stop) {
NSLog(@"%@ = %@", key, object);
}];