37

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

Fred 辞書
名 Fred
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 に設定することをお勧めします。

4

3 に答える 3

94

通常、NSNumber オブジェクトにラップされた obj-c コンテナーに格納される BOOL 値。その場合は、次を使用して bool 値を取得できます。

self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];
于 2010-09-29T14:34:11.333 に答える
6

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

何かのようなもの:

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

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

于 2010-09-29T15:47:54.183 に答える