Frage

ich eine plist-Datei, die eine Reihe von Wörterbüchern enthält. Hier ist einer von ihnen:

Fred Wörterbuch
Name Fred
isMale [Box wird geprüft]

So, jetzt bin ich Initialisierung meine Person-Objekt mit dem Wörterbuch I aus der plist-Datei lesen:

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

Wie kann ich den obigen Code erfolgreich abgeschlossen werden, so dass self.isMale auf YES gesetzt, wenn die Box in der plist-Datei aktiviert ist, und NO, wenn es nicht ist. Vorzugsweise ist auch auf NO gesetzt, wenn kein Schlüssel isMale im Wörterbuch enthalten ist.

War es hilfreich?

Lösung

Werte BOOL in der Regel in obj-c-Containern in NSNumber Gegenstand gewickelt aufbewahrt. Wenn es so in Ihrem Fall ist, dann können Sie Bool Wert abrufen mit:

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

Andere Tipps

Vladimir ist richtig, ich werde einfach zu läuten und sage, dass es gut ist, dass diese Werte von dem plist exist zu überprüfen, wie gut, und wenn es nicht auf einen Standardwert gesetzt in der Regel.

So etwas wie:

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

Welche überprüft, ob der Wert für den Schlüssel „isMale“ im Wörterbuch vorhanden ist. Ist dies der Fall, dann wird es die boolValue von ihm. Wenn nicht, dann tut es setzt self.isMale auf die Standardeinstellung von NO.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top