Domanda

Ho un file plist che contiene una serie di dizionari. Qui è uno di loro:

Fred dizionario
Nome Fred
isMale [casella è selezionata]

Così ora sto in fase di inizializzazione il mio oggetto persona con il dizionario che ho letto dal file plist:

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

Come faccio a finire il codice di cui sopra in modo che self.isMale è impostata su YES se la casella è selezionata nel file plist, e NO se non lo è. Preferibilmente anche impostato su NO se non c'è isMale chiave nel dizionario.

È stato utile?

Soluzione

BOOL valori solitamente conservato in contenitori obj-c avvolti in oggetto NSNumber. Se è così nel tuo caso, allora è possibile recuperare bool valore utilizzando:

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

Altri suggerimenti

Vladimir ha ragione, sto solo andando a carillon in e dire che è bene controllare che i valori del esistono plist così, e se non impostarlo su un valore predefinito di solito.

Qualcosa di simile:

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

Quali controlli per vedere se il valore per la chiave "isMale" esiste nel dizionario. Se lo fa, allora si ottiene il BOOLVALUE da esso. Se non lo fa, allora imposta self.isMale al default di NO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top