J'ai une classe AppDelegate avec la méthode +(void)initialize
que j'utilise pour enregistrer certaines valeurs par défaut. Voici le code que j'utilise:Comment enregistrer les valeurs par défaut utilisateur en utilisant NSUserDefaults sans écraser les valeurs existantes?
+ (void)initialize {
NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:@"NO", @"fooKey", @"YES", @"barKey", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
}
J'ai aussi créé Preferences.xib qui contient deux cases à cocher (NSButton
) que l'état d'affichage des préférences. Ils sont liés à NSUserDefaultsController
avec les mêmes clés (fooKey et barKey dans ce cas). Chaque fois que je lance une application et change les "par défaut", ils sont restaurés au prochain lancement de l'application.
Existe-t-il un moyen d'enregistrer les "valeurs par défaut" sans écraser les valeurs déjà existantes? Peut-être que chaque fois que je construis et lance une application, son fichier de préférences est en train d'être recréé? Peut-être que je devrais découpler les cases à cocher de NSUserDefaultsController
et de maintenir les valeurs des clés moi-même avec du code personnalisé dans le contrôleur de fenêtre de préférences?
Je voudrais entendre votre implémentation de choix pour la gestion des valeurs par défaut.
J'utilise Mac OS X 10.6.2 et Xcode 3.2.1
Assurez-vous que les cases à cocher sont liés à "contrôleur Paramètres par défaut partagé", clé du contrôleur "valeurs", le modèle des chemins clés "fooKey"/"Barkey". Sinon, votre code me va bien. – Costique
'@" NO "' n'est pas un littéral booléen; c'est un littéral de chaîne pour le mot "NON". Vous devriez utiliser '[NSNumber numberWithBool: NO]'; sinon, les valeurs dans les valeurs par défaut de l'utilisateur ne seront pas des booléens. –
Non, ils ne seront pas, mais si je les lis comme BOOLs - ils le feront. Extrait du livre de Daniel H Steinberg "Cocoa Programming" (pragprog.com): En fait, vous n'avez pas besoin d'être aussi explicite lorsque vous placez le BOOL dans le dictionnaire. Vous pouvez passer la valeur YES ou NO sous forme de chaîne et créer un BOOL à partir de cette valeur lorsque vous lisez les préférences. – Eimantas