objective ios objective-c iphone nsdictionary

ios - objective - nsdictionary to object swift



La clave de verificación existe en NSDictionary (8)

Así que sé que ya seleccionó una respuesta, pero me pareció bastante útil como categoría en NSDictionary . Empiezas a obtener eficiencia en este punto con todas estas respuestas diferentes. Meh ... 6 de 1 ...

- (BOOL)containsKey: (NSString *)key { BOOL retVal = 0; NSArray *allKeys = [self allKeys]; retVal = [allKeys containsObject:key]; return retVal; }

¿Cómo puedo verificar si esto existe ?:

[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]

Quiero saber si esta clave existe o no. ¿Cómo puedo hacer eso?

Muchas gracias :)

EDITAR: dataArray tiene Objetos en él. Y estos objetos son NSDictionaries.


El diccionario de verificación contiene cualquier valor. Prefiero [dic allKeys] .count> 0 verificar.


Este hace lo mismo pero con menos código:

if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */ } else { /* the key doesn''t exist */ }


Prueba esto:

if ([dict objectForKey:@"bla"]) { // use obj } else { // Do something else like create the object }


Supongo que [dataArray objectAtIndex:indexPathSet.row] está devolviendo un NSDictionary , en cuyo caso puede simplemente verificar el resultado de valueForKey contra nil.

Por ejemplo:

if([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) { // The key existed... } else { // No joy... }


Verifique si es nulo:

if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) { // SetEntries exists in this dict } else { // No SetEntries in this dict }


esto también funciona usando literales Objective-C usando la siguiente sintaxis:

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" }; if (dict[@"key2"]) NSLog(@"Exists"); else NSLog(@"Does not exist");


if ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) { // SetEntries exists in this dict } else { // No SetEntries in this dict }

Esa es la respuesta correcta.