Initialiser les NSUserDefaults
WIMP
Membre
Bonjour à tous,
J'utilise quelques parametres numériques, que j'affiche et modifie via des NSTextView.
Je souhaite les enregistrer comme NSUserDefaults.
Pour cela les NSTextView ont pour target une IBAction qui contient:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
attackFactor = [[sender cellAtRow:0 column:0] floatValue];
defenseFactor = [[sender cellAtRow:1 column:0] floatValue];
[prefs setFloat:attackFactor forKey:@attack];
[prefs setFloat:defenseFactor forKey:@defense];
Au lancement du programme les NSUserDefaults ont été initialisés par:
+(void)initialize
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *defs = [NSMutableDictionary dictionary];
[prefs setFloat:0.1 forKey:@attack];
[prefs setFloat:0.01 forKey:@defense];
[prefs registerDefaults:defs];
}
Si le fichier de préférences est déjà créé et que je supprime initialize, tout se passe bien.
J'avais cru comprendre qu' une fois les préférences crées dans le dossier users/name/library/preferences, +(void)initialize était sans effet.
Hors à chaque appel initialize s'exécute et écrase les préférences que j'avais enregistré
(j'ai vérifié dans property list editor qu'elles étaient bien enregistrées).
Ce qui est bizarre c'est que j'ai utilisé la même méthode (en plus complexe) dans "Fractales 2.0" pour enregistrer les palettes de couleurs, et que ça marche bien: mes palettes utilisateurs ne sont jamais écrasées.
Donc ma question est: quel est le comportement correct ? Si c'est l'écrasement, il va falloir qe je comprenne pourquoi Fractales marche si bien...Il faut bien trouver un moyen d'initialiser les préférences utilisateur.
Merci de vos lumières.
PS: je viens de regarder le topic de Macvelotte sur la question, et j'en conclus qu'il ne devrait pas y avoir écrasement...
J'utilise quelques parametres numériques, que j'affiche et modifie via des NSTextView.
Je souhaite les enregistrer comme NSUserDefaults.
Pour cela les NSTextView ont pour target une IBAction qui contient:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
attackFactor = [[sender cellAtRow:0 column:0] floatValue];
defenseFactor = [[sender cellAtRow:1 column:0] floatValue];
[prefs setFloat:attackFactor forKey:@attack];
[prefs setFloat:defenseFactor forKey:@defense];
Au lancement du programme les NSUserDefaults ont été initialisés par:
+(void)initialize
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *defs = [NSMutableDictionary dictionary];
[prefs setFloat:0.1 forKey:@attack];
[prefs setFloat:0.01 forKey:@defense];
[prefs registerDefaults:defs];
}
Si le fichier de préférences est déjà créé et que je supprime initialize, tout se passe bien.
J'avais cru comprendre qu' une fois les préférences crées dans le dossier users/name/library/preferences, +(void)initialize était sans effet.
Hors à chaque appel initialize s'exécute et écrase les préférences que j'avais enregistré
(j'ai vérifié dans property list editor qu'elles étaient bien enregistrées).
Ce qui est bizarre c'est que j'ai utilisé la même méthode (en plus complexe) dans "Fractales 2.0" pour enregistrer les palettes de couleurs, et que ça marche bien: mes palettes utilisateurs ne sont jamais écrasées.
Donc ma question est: quel est le comportement correct ? Si c'est l'écrasement, il va falloir qe je comprenne pourquoi Fractales marche si bien...Il faut bien trouver un moyen d'initialiser les préférences utilisateur.
Merci de vos lumières.
PS: je viens de regarder le topic de Macvelotte sur la question, et j'en conclus qu'il ne devrait pas y avoir écrasement...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
T'y t'es trompé !
Regarde ce que tu fais : tu crées un dictionnaire dont tu ne fais rien (defs), et tu "set" les défauts, donc oui tu les écrases.
Le code correct est:
+
Chacha
ça m'apprendra à recopier du code sans faire attention à bien le comprendre
WIMP