NSUSERDefaults Boolforkey Limitação por design?
-
25-09-2019 - |
Pergunta
o NSUserDefaults
A documentação da API tem o boolForKey:
mensagem que é descrita assim -
boolForKey:
Retorna o valor booleano associado à chave especificada.
- (BOOL)boolForKey:(NSString *)defaultName
Valor de retorno Se um valor booleano estiver associado ao padrão padrão nos padrões do usuário, esse valor será retornado. Caso contrário, não é devolvido.
Dado que um [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"]
devolver um não, pode ser porque a chave não existe ou a chave existe e tem um boolean
valor no. Como podemos diferenciar? A partir de agora, só posso evitar entrar nessa situação em primeiro lugar.
Solução
Você está usando os padrões do usuário incorretamente. No lançamento do seu aplicativo, você deve ligar -[NSUserDefaults registerDefaults:]
com um dicionário que contém os valores padrão para todas as preferências.
Então, se o usuário não definiu uma preferência, -boolForKey
retornará o valor padrão.
Outras dicas
Use o -objectForKey:
método também. Isso lhe dirá se a chave existe.