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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top