para cada bucle en Objective-C para acceder al diccionario NSMutable

Resuelto sagarkothari asked hace 14 años • 7 respuestas

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?

sagarkothari avatar Jan 27 '10 06:01 sagarkothari
Aceptado
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 NSDictionaryes 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.

zneak avatar Jan 26 '2010 23:01 zneak

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);
}];
Quinn Taylor avatar Jan 27 '2010 05:01 Quinn Taylor