Восстановление Bool внутри Nsdictionary из файла plist
-
26-09-2019 - |
Вопрос
У меня есть файл plist, который содержит массив словарей. Вот один из них:
Фред словарь
Имя Фред
Ismale [Коробка проверяется
Так что теперь я инициализирую свой объект своего человека с словарем, я читаю из файла Plist:
-(id) initWithDictionary: (NSDictionary *) dictionary {
if (self = [super init])
self.name = [dictionary valueForKey: @"Name"];
self.isMale = ????
}
Как я заканчиваю вышеуказанный код, так что Self.ismale установлен на да, если коробка проверяется в файле plist, и нет, если это не так. Предпочтительно также устанавливается нет, если в словаре нет ключей Ismale.
Решение
Значения BOOL обычно хранятся в контейнерах OBJ-C, завернутые в объект NSNUMBE. Если это так в вашем случае, вы можете получить значение BOOL, используя:
self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];
Другие советы
Владимир прав, я просто собираюсь догонять и сказать, что полезно проверять, что эти значения из Plist существуют также, и если не установите его на значение по умолчанию.
Что-то вроде:
id isMale = [dictionary valueForKey:@"isMale"];
self.isMale = isMale ? [isMale boolValue] : NO;
Которые проверяют, существует ли значение для ключа «ismale» в словаре. Если это происходит, то он получает у него выгоду из него. Если это не то, то он устанавливает самоустранение.