2012-07-25 16 views
16

Duplicar posible:
How to check if an NSDictionary or NSMutableDictionary contains a key?Está buscando una manera elgant para comprobar si una clave exsists en un diccionario

puedo conseguir el un conjunto de los Cayos (cadenas) del diccionario a continuación, repásalos haciendo una comparación de cadenas con la clave que quiero verificar y veré si ese diccionario contiene la clave que busco.

¿Pero hay un deseo más elegante de verificar si la clave existe en el diccionario?

 NSArray * keys = [taglistDict allKeys]; 
     for (NSString *key in keys) 
     { 
      // do string compare etc 
     } 

-Code

+0

2014 respuesta: http://stackoverflow.com/a/22001925/294884 – Fattie

Respuesta

37

Un NSDictionary no puede contener nil valores, por lo que simplemente puede utilizar [NSDictionary objectForKey:] que devolverá nil si la clave no existe:

BOOL exists = [taglistDict objectForKey:key] != nil; 

EDIT: Como se ha mencionado por @ OMGPOP, esto también funciona usando literales de Objective-C usando la siguiente sintaxis:

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" }; 

if (dict[@"key3"]) 
    NSLog(@"Exists"); 
else 
    NSLog(@"Does not exist"); 

Lienzo:

Does not exist 
+0

¿y el objc moderno? si uso dict [@ "key"] se bloqueará – OMGPOP

+0

@OMGPOP Funciona para mí. – trojanfoe

+0

esto no funciona para mí. da error – Moxarth

-2

Suponiendo que la clave es de tipo NSString y keys es un diccionario, entonces en lugar debería estar usando algo como:

if [keys containObject:key] { 
// do something 
} 
9

Trojanfoe probablemente mejor, pero también se puede do:

[[taglistDict allKeys]containsObject:key] 
+0

¡Un forro sencillo! – Shailesh

Cuestiones relacionadas