Ответ 1
Значения BOOL обычно хранятся в контейнерах obj-c, завернутых в объект NSNumber. Если это так в вашем случае, вы можете получить значение bool, используя:
self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];
У меня есть файл plist, который содержит массив словарей. Вот один из них:
Словарь Фреда
Имя Фред
isMale [поле отмечено]
Итак, теперь я инициализирую свой объект Person со словарем, который я прочитал из файла plist:
-(id) initWithDictionary: (NSDictionary *) dictionary {
if (self = [super init])
self.name = [dictionary valueForKey: @"Name"];
self.isMale = ????
}
Как мне закончить предыдущий код, чтобы для self.isMale установлено значение YES, если флажок установлен в файле plist, и NO, если это не так. Также предпочтительно установить значение NO, если в словаре нет ключа isMale.
Значения BOOL обычно хранятся в контейнерах obj-c, завернутых в объект NSNumber. Если это так в вашем случае, вы можете получить значение bool, используя:
self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];
Владимир прав, я просто собираюсь перезвонить и сказать, что хорошо проверить, что эти значения из plist существуют, а также, если не установить его по умолчанию.
Что-то вроде:
id isMale = [dictionary valueForKey:@"isMale"];
self.isMale = isMale ? [isMale boolValue] : NO;
Что проверяет, существует ли в словаре значение ключа "isMale". Если это произойдет, он получит от него boolValue. Если это не так, то устанавливает self.isMale значение по умолчанию NO.