objective-c cocoa boolean nsdictionary property-list

objective c - Restauración de un BOOL dentro de un NSDictionary a partir de un archivo plist



objective-c cocoa (2)

Los valores BOOL normalmente se almacenan en contenedores obj-c envueltos en un objeto NSNumber. Si es así en tu caso, puedes recuperar el valor de bool usando:

self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];

Tengo un archivo plist que contiene una matriz de diccionarios. Aqui esta uno de ellos:

Diccionario Fred
Nombre Fred
isMale [casilla está marcada]

Así que ahora estoy inicializando mi objeto Person con el diccionario que leí del archivo plist:

-(id) initWithDictionary: (NSDictionary *) dictionary { if (self = [super init]) self.name = [dictionary valueForKey: @"Name"]; self.isMale = ???? }

¿Cómo finalizo el código anterior para que self.isMale se establezca en SÍ si la casilla está marcada en el archivo plist, y NO si no lo está? Preferiblemente, también se establece en NO si no hay ninguna clave. Masculina en el diccionario.


Vladimir tiene razón, solo voy a decir que es bueno verificar que esos valores de la lista también existan, y si no se establece en un valor predeterminado por lo general.

Algo como:

id isMale = [dictionary valueForKey:@"isMale"]; self.isMale = isMale ? [isMale boolValue] : NO;

Que verifica si el valor para la clave "isMale" existe en el diccionario. Si lo hace, obtiene el boolValue de él. Si no lo hace, establece self.isMale con el valor predeterminado de NO.