Restaurando um bool dentro de um nsdictionary de um arquivo de plista
-
26-09-2019 - |
Pergunta
Eu tenho um arquivo de plista que contém uma variedade de dicionários. Aqui está um deles:
Fred Dictionary
Nome Fred
ismale [caixa é verificada
Então agora estou inicializando meu objeto de pessoa com o dicionário que li do arquivo Plist:
-(id) initWithDictionary: (NSDictionary *) dictionary {
if (self = [super init])
self.name = [dictionary valueForKey: @"Name"];
self.isMale = ????
}
Como faço para finalizar o código acima para que o self.ismale esteja definido como sim se a caixa for verificada no arquivo Plist, e não, se não for. De preferência também definido como não se não houver ismale chave no dicionário.
Solução
Os valores BOOL geralmente armazenados em contêineres OBJ-C embrulhados no objeto NSNumber. Se for assim, no seu caso, você pode recuperar o valor do BOOL usando:
self.isMale = [[dictionary objectForKey:@"isMale"] boolValue];
Outras dicas
Vladimir está certo, eu vou entrar e dizer que é bom verificar se esses valores do Plist também existem e, se não forem defini -lo como um valor padrão normalmente.
Algo como:
id isMale = [dictionary valueForKey:@"isMale"];
self.isMale = isMale ? [isMale boolValue] : NO;
Que verifica se o valor da chave "ismale" existe no dicionário. Se isso acontecer, ele recebe o boolvalue. Caso contrário, ele define o mesmo.mismale para o padrão de não.