limitation NSUserDefaults boolforKey par la conception?
-
25-09-2019 - |
Question
La documentation de l'API NSUserDefaults
a le message boolForKey:
qui est décrit comme ceci -
boolForKey:
Renvoie la valeur booléenne associée à la clé spécifiée.
- (BOOL)boolForKey:(NSString *)defaultName
Valeur de retour Si une valeur booléenne est associée à DEFAULTNAME dans les paramètres utilisateur par défaut, cette valeur est renvoyée. Dans le cas contraire, le NO est retourné.
Étant donné que [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"]
redonne un NO peut être soit parce que la clé n'existe pas ou la clé existe et a une valeur de boolean
NO. Comment peut-on différencier? A partir de maintenant, je ne peux éviter d'entrer dans cette situation en premier lieu.
La solution
Vous utilisez les paramètres par défaut de l'utilisateur de manière incorrecte. Lors du lancement de votre application, vous êtes censé appeler -[NSUserDefaults registerDefaults:]
avec un dictionnaire qui contient les valeurs par défaut pour toutes les préférences.
Ensuite, si l'utilisateur n'a pas fixé de préférence, -boolForKey
renvoie la valeur par défaut.
Autres conseils
Utilisez la méthode -objectForKey:
aussi. Cela vous indiquera si la clé existe.