Pregunta

Tengo un archivo plist que contiene una serie de diccionarios. He aquí uno de ellos:

Fred Diccionario
Nombre Fred
isMale [casilla está marcada]

Así que ahora estoy inicializando mi persona objeto con el diccionario leí desde el archivo plist:

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

¿Cómo acabar con el código anterior para que self.isMale se establece en YES si la casilla está marcada en el archivo plist, y NO si no lo es. Preferiblemente también se establece en NO si no hay isMale clave en el diccionario.

¿Fue útil?

Solución

BOOL valores de normalmente se almacena en recipientes obj-c envueltos en objeto NSNumber. Si esto es así en su caso, entonces se puede recuperar el valor bool usando:

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

Otros consejos

Vladimir es correcto, yo sólo voy a meter su cuchara y decir que es bueno para comprobar que los valores de la plist existir así, y si no se establece en un valor por defecto por lo general.

Algo así como:

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

que comprueba si existe el valor de la clave "isMale" en el diccionario. Si lo hace, entonces se pone la BOOLVALUE de ella. Si no lo hace, entonces establece self.isMale en el valor predeterminado de NO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top