Je veux définir des valeurs initiales pour mes clés NSUserDefault afin que la première exécution de l'application ait des paramètres initiaux raisonnables. Je pensais avoir rencontré un moyen simple de le faire dans le bundle d'application .plist, mais maintenant je ne le trouve pas. Des idées?
Vous devez utiliser la méthode registerDefaults
de NSUserDefaults
. Préparez un fichier plist dans votre ensemble qui contient les préférences par défaut, puis utilisez ce plist pour enregistrer les valeurs par défaut.
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
Vous devez exécuter ce code à chaque lancement de votre application. Il ajoutera ces valeurs à un domaine distinct dans la hiérarchie des valeurs par défaut de l'utilisateur. Chaque fois que les valeurs par défaut de l'utilisateur de votre application ne fournissent pas de valeur pour une certaine clé, NSUserDefaults
se repliera sur ce domaine et récupérera la valeur à partir de là.
Si vous avez de nombreuses valeurs par défaut, laissez utiliser la réponse d'ola , sinon c'est bon pour quelques paramètres
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {
[defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];
// Set initial values
...
[defaults synchronize];
}
if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
[[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NB: Non testé, fait de mémoire