NSUserDefaults boolforKey limitación por diseño?
-
25-09-2019 - |
Pregunta
La documentación API NSUserDefaults
tiene el mensaje boolForKey:
que se describe como esto -
boolForKey:
Devuelve el valor booleano asociado con la clave especificada.
- (BOOL)boolForKey:(NSString *)defaultName
Valor devuelto Si un valor booleano se asocia con DEFAULTNAME en los valores predeterminados del usuario, se devuelve dicho valor. De lo contrario, NO se devuelve.
Dado que una [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"]
devuelve un NO puede ser ya sea porque la clave no existe o existe la clave y tiene un valor boolean
NO. ¿Cómo podemos diferenciar? A partir de ahora, sólo puedo evitar entrar en esta situación en primer lugar.
Solución
Está utilizando los valores predeterminados del usuario de forma incorrecta. En el lanzamiento de su aplicación, que se supone que -[NSUserDefaults registerDefaults:]
llamada con un diccionario que contiene los valores por defecto para todas las preferencias.
A continuación, si el usuario no ha puesto una preferencia, -boolForKey
devolverá el valor por defecto.
Otros consejos
Utilice el método -objectForKey:
también. Esto le dirá si existe la clave.