从plist文件恢复NSDictionary中的BOOL

时间:2010-09-29 14:30:38

标签: objective-c cocoa boolean nsdictionary property-list

我有一个plist文件,其中包含一系列字典。这是其中之一:

弗雷德字典
姓弗雷德 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。

2 个答案:

答案 0 :(得分:91)

BOOL值通常存储在包含在NSNumber对象中的obj-c容器中。如果情况确实如此,那么您可以使用以下方法检索bool值:

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

答案 1 :(得分:6)

弗拉基米尔是对的,我只是想进入并说好检查plist中的那些值是否也存在,如果没有通常将其设置为默认值。

类似的东西:

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

检查词典中是否存在键“isMale”的值。如果确实如此,则从中获取boolValue。如果没有,则将self.isMale设置为默认值NO。