Подтвердить что ты не робот

Восстановление BOOL внутри NSDictionary из файла plist

У меня есть файл 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.

4b9b3361

Ответ 1

Значения BOOL обычно хранятся в контейнерах obj-c, завернутых в объект NSNumber. Если это так в вашем случае, вы можете получить значение bool, используя:

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

Ответ 2

Владимир прав, я просто собираюсь перезвонить и сказать, что хорошо проверить, что эти значения из plist существуют, а также, если не установить его по умолчанию.

Что-то вроде:

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

Что проверяет, существует ли в словаре значение ключа "isMale". Если это произойдет, он получит от него boolValue. Если это не так, то устанавливает self.isMale значение по умолчанию NO.