[Résolu] NSUserDefauls retourne une valeur fausse
berfis
Membre
Bonjour,
Il m'arrive un de ces trucs agaçants.
Dans mon fichier de préférences, je stocke une valeur d'index pour un groupe de boutons-radio.comme
Lancement de l'application:
o Ne rien ouvrir
o Ouvrir un document sans titre
o Ouvrir le document: [nom du document]
Je récupère cette valeur au lancement de l'application:
long option = [[NSUserDefaults standardUserDefaults] integerForKey:@openingOption];
Et là , surprise, j'obtiens ceci:
(Valeur de la clé, bouton sélectionné, valeur retournée par l'appel)
0 0 0
1 1 0
2 2 2
Une idée ?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
^^Attends, Ali a une boule de cristal je crois ;D
Plus sérieusement, comment pourrait on avoir une idée ? Ou alors j'ai pas compris la question ?
Ca me parait déjà pas très cohérent...
donne le même résultat... De toute façon si je mets int le compilateur râle.
Plus d'infos... désolé, mais c'est tout ce que j'ai. Une valeur de préférences qui retourne 0 alors qu'elle devrait retourner 1. Mais qui retourne 2... ou 3 ou 4...
Voici la routine d'appel:
Je ne vois pas quoi vous donner d'autre.
Est-ce que la valeur est bonne dans le plist ?
Le selected Index du groupe de boutons-radio est lié par binding au shared User Defaults Controller, par la clé values:openingOption (validates immediately).
Le plus fort, c'est que le bouton-radio sélectionné du groupe est correctement enregistré. Quand je relance l'application, la valeur est correcte.
En fait, j'ai remarqué quelque chose d'encore plus étrange: quand je sélectionne 1 (qui est la valeur par défaut) l'application me retourne 0 parce que la clé disparaà®t de la plist !
Je mentionne encore ceci (c'est la 2e méthode de mon AppDelegate qui n'en compte que deux):
Ghost in the machine...
C'est ce que je fais. Le code dans applicationDidFinishLaunching est là pour installer les valeurs "d'usine", quand l'application est lancée pour la première fois et qu'aucun fichier de préférences n'existe, ou que l'utilisateur n'a pas encore modifié l'une des valeurs.
Mais en règle générale, depuis que les préférences sont mises en cache (Mavericks?), j'ai l'impression de ne plus rien maà®triser...
Quitté Xcode, redémarré, et ça roule. Ce n'était pas dans le code, mais franchement je n'ai pas envie d'investiguer plus loin. Entre un Xcode beta et un MacOS beta, tant de choses peuvent arriver... On n'est plus au temps du système 6 et de ResEdit, et je bosse à plein temps dans un tout autre domaine. Merci en tout cas de votre réjouissante réactivité!
Des NSLog...
Et j'ai rajouté un NSTextField pour afficher la valeur (des fois que NSMatrix, dont la mort est annoncée, stocke le selected index ailleurs).
Pour moi c'était une affaire de cache corrompu.
De toute façon j'ai la tête un peu farcie en ce moment, en plus du boulot je suis un cours pour programmer du Core Data en Swift sur iOS, en utilisant storyboard alors voila, voila... Comme disait le Concombre masqué : "Oeuf mou! J'ai la tête qui pète"...