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.