web-dev-qa-db-ja.com

plistファイルからNSDictionary内のBOOLを復元する

辞書の配列を含むplistファイルがあります。これがそれらの1つです:

フレッド辞書
名前フレッド
isMale [ボックスがチェックされています]

だから今私はplistファイルから読んだ辞書でPersonオブジェクトを初期化しています:

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

上記のコードをどのように終了すれば、plistファイルでボックスがチェックされている場合はself.isMaleがYESに設定され、そうでない場合はNOに設定されます。辞書にキーisMaleがない場合も、NOに設定するのが望ましいです。

36

BOOL値は通常、NSNumberオブジェクトにラップされたobj-cコンテナに格納されます。あなたの場合はそうであれば、あなたはブール値を取得することができます:

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

ウラジミールは正しいです。チャイムを鳴らして、plistの値も存在することを確認し、存在しない場合は通常はデフォルト値に設定することをお勧めします。

何かのようなもの:

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

キー「isMale」の値がディクショナリに存在するかどうかを確認します。もしそうなら、それはそれからboolValueを取得します。そうでない場合は、self.isMaleをデフォルトのNOに設定します。

6
djdrzzy