una tener para length description debe cuantos contar contador caracteres objective-c nsdictionary enumeration nsmutabledictionary key-value

objective-c - tener - meta description seo



para cada bucle en el objetivo c para acceder al diccionario NSMutable (7)

La enumeración rápida se agregó en 10.5 y en el sistema operativo iPhone, y es significativamente más rápida, no solo de azúcar sintáctica. Si tiene que apuntar al tiempo de ejecución anterior (es decir, 10.4 y hacia atrás), deberá usar el método antiguo de enumeración:

NSDictionary *myDict = ... some keys and values ... NSEnumerator *keyEnum = [myDict keyEnumerator]; id key; while ((key = [keyEnum nextObject])) { id value = [myDict objectForKey:key]; ... do work with "value" ... }

No liberas el objeto enumerador y no puedes restablecerlo. Si desea volver a empezar, debe solicitar un nuevo objeto de enumerador del diccionario.

Estoy encontrando alguna dificultad para acceder a claves y valores de diccionarios mutables en Objective-C.

Supongamos que tengo esto:

NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];

Puedo establecer claves y valores. Ahora, solo quiero acceder a cada clave y valor, pero no sé el número de claves establecidas.

En PHP es muy fácil, algo así:

foreach ($xyz as $key => $value)

¿Cómo es posible en Objective-C?


La forma más fácil de enumerar un diccionario es

for (NSString *key in tDictionary.keyEnumerator) { //do something here; }

donde tDictionary es el NSDictionary o NSMutableDictionary que desea iterar.




Si necesita mutar el diccionario al enumerar:

for (NSString* key in xyz.allKeys) { [xyz setValue:[NSNumber numberWithBool:YES] forKey:key]; }


Solo 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 quieres que las acciones ocurran concurrentemente:

[dict enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id key, id object, BOOL *stop) { NSLog(@"%@ = %@", key, object); }];


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 .

Oh, debo agregar, sin embargo, que NUNCA deberías modificar una colección al enumerarla.