Problème d'écriture dans les préférences

olivier555olivier555 Membre
14:55 modifié dans API AppKit #1
Bonjour!
Mon nouveau problème est le suivant : Lorsque l'utilisateur clique sur OK de la fenêtre des préférences, normalement les préférences sont sauvegardées avec le code suivant pour chaque paramètre :

<br />[[NSUserDefaults standardUserDefaults] setFloat:valeur forKey:@&quot;cle&quot;];<br />


Or, ca ne marche pas. La lecture, elle, marche parfaitement :

<br />valeur = [[NSUserDefaults standardUserDefaults floatForKey:@&quot;cle&quot;];<br />


Avez-vous une idée s'il vous plaà®t? Merci!

Réponses

  • muqaddarmuqaddar Administrateur
    14:55 modifié #2
    Il est bizarre ton setFloat...

    T'as essayé un truc comme ça :
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat: [valeur floatValue]] forKey:@&quot;cle&quot;];<br />
    
    ?
  • olivier555olivier555 Membre
    14:55 modifié #3
    Oui j'ai essayé et ça ne change rien...
  • muqaddarmuqaddar Administrateur
    14:55 modifié #4
    Et tu mets ce code dans l'action reliée à  ton bouton OK ?
  • Eddy58Eddy58 Membre
    octobre 2005 modifié #5
    Les préférences sont sauvegardées dans le cache, et non synchronisées avec le fichier des userdefaults. Ca me le fait des fois, et un appel à  la méthode synchronize après l'écriture de tes prefs dans le cache devrait normalement résoudre cela. :)

    [tt]
    NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat: [valeur floatValue forKey:@cle];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [/tt]
  • ChachaChacha Membre
    14:55 modifié #6
    dans 1129042690:

    Mon nouveau problème est le suivant : Lorsque l'utilisateur clique sur OK de la fenêtre des préférences, normalement les préférences sont sauvegardées avec le code suivant pour chaque paramètre :

    <br />[[NSUserDefaults standardUserDefaults] setFloat:valeur forKey:@&quot;cle&quot;];<br />
    


    Or, ca ne marche pas.

    Moi je n'ai pas compris le probleme. Ton vrai code, c'est quoi ?



    La lecture, elle, marche parfaitement :

    Mais comment peux-tu le savoir si l'écriture ne fonctionne pas ?


    +
    Chacha
  • muqaddarmuqaddar Administrateur
    14:55 modifié #7
    Qu'y a t-il d'affiché dans le fichier des prefs de ton app ?
  • olivier555olivier555 Membre
    14:55 modifié #8
    Alors.
    Le code pour la fonction appelée après le clic sur OK est la suivante :

    <br />- (IBAction)bT_OKClick:(id)sender<br />{			<br />[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:param1] forKey:@&quot;Param1&quot;];<br />[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:param2] forKey:@&quot;Param2&quot;];<br />[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:param3] forKey:@&quot;Param3&quot;];<br /><br />[NSApp stopModal];<br />[self close];<br />}<br />
    


    Chacha :

    Citation
    La lecture, elle, marche parfaitement :
    Mais comment peux-tu le savoir si l'écriture ne fonctionne pas ?


    Je modifie mon fichier .plist directement avec Property List Editor. Il me permet également de vérifier les valeurs (fausses . :( ).

    En fait concrètement, le programme sauvegarde les paramètres parfois, mais pas toujours.

    Eddy58 :
    Le synchronize ne marche pas non plus!!

    Mais les valeurs affichées à  l'ouverture de ma fenêtre de Preferences sont toujours celles vues dans Property List Editor, c'est pour ça que je dis que la lecture fonctionne.

    Bon, sinon je vais ré-essayer le synchronize, je commence à  fatiguer ce soir.... En tout cas merci beaucoup à  vous!
  • olivier555olivier555 Membre
    14:55 modifié #9

    Qu'y a t-il d'affiché dans le fichier des prefs de ton app ?


    Des anciennes prefs!! Ou en tout cas pas celles que l'utilisateur a choisi via la fenêtre de Pref du soft.
  • muqaddarmuqaddar Administrateur
    14:55 modifié #10
    dans 1129046648:


    Qu'y a t-il d'affiché dans le fichier des prefs de ton app ?


    Des anciennes prefs!! Ou en tout cas pas celles que l'utilisateur a choisi via la fenêtre de Pref du soft.


    On peut voir le contenu du fichier stp ?
  • ChachaChacha Membre
    14:55 modifié #11
    Une idée, comme ça...
    Elle est vraiment appelée, ta fonction bT_okClick ?
    Oui ça paraà®t bête, mais sait-on jamais...

    +
    Chacha
  • octobre 2005 modifié #12
    Quand tu dis "ne marche pas", ça veut dire quoi?

    - Les préférences sont prises en compte tant que l'application est ouverte, mais ne sont pas sauvées à  la fermeture de l'application.
    - Les préférences ne sont jamais prises en compte.

    Si c'est la première, il y a une erreur qui est très souvent faite: quitter l'application depuis Xcode ne ferme pas l'application proprement, et donc les préférences ne sont pas sauvées.

    Sinon si on a laissé l'identifiant du bundle par défaut(com.apple.myCocoaApplication) les préférences ne seront pas sauvées. À modifier dans le info.plist.
  • olivier555olivier555 Membre
    14:55 modifié #13
    Bonjour!
    Désolé pour le retard de cette réponse (un mois déjà ...), en fait j'ai dû me pencher sur d'autres aspects de mon projet entretemps.
    Enfin bref, je suis revenu à  tête reposée sur les préférences, et là  ça marche. Le problème est que ça marche avec ce que j'avais déjà  fait (qui est très simple, c'est les bouts de code que j'ai copiés/collés dans ce thread, et puis les synchronize d'Eddy58 entre les instructions). Le truc bizare c'est que la lecture/écriture dans les préférences marche à  95% des cas, mais il reste ces 5% "aléatoires"... Et c'est pour ça que je vous ai soulé avec mes questions :)
    En tout cas merci de votre aide!!
Connectez-vous ou Inscrivez-vous pour répondre.