2010-03-17 3 views
2

J'ai un problème étrange que je n'arrive pas à comprendre. Je suis un peu un n00b à Interface Builder. Ce que j'essaie de faire semble être simple, mais ça ne marche pas pour une raison quelconque.Problème avec les données ne pas enregistrer avec des liaisons et partagé NSUserDefaults dans IB

Dans le constructeur d'interface, j'ai une fenêtre de préférences avec un NSTextField simple. J'ai défini la liaison de valeur au contrôleur Shared User Defaults Controller avec les valeurs de clé de contrôleur et la clé de modèle "test". Je construis/exécute mon application et ouvre la fenêtre de préférences, tapez une valeur aléatoire dans ce champ de texte, fermez la fenêtre. Command-Q l'application. Ensuite, dans un shell, je fais un "par défaut lu com.xxx.yyy" pour mon application et la clé et la valeur sont introuvables. Cela étant dit, il semble que la prochaine fois que je lance l'application et change la valeur, cela fonctionne, mais seulement si je coupe le focus de la NSTextField avant de fermer la fenêtre.

Dans la documentation de NSUserDefaults, il est indiqué que le contrôleur partagé enregistre immédiatement les valeurs. Ai-je manqué quelque chose de stupide ici?

Merci pour toute aide.

Répondre

8

Je réponds à cette question longtemps après qu'on l'a demandé au cas où d'autres la trouveraient utile.

Il semble que vous deviez définir "Valeurs de mises à jour en continu" pour le champ de texte que vous avez lié. Dans le cas contraire, la valeur est uniquement envoyée et, par conséquent, les préférences ne sont mises à jour que lorsqu'un élément arrive à «finaliser» l'édition. Cela est généralement déclenché en appuyant sur Retour et se produit probablement également lorsque vous désactivez le focus de la fenêtre (bien que je l'ai testé dans une de mes propres applications et qu'il ne semble pas avoir validé la modification).

Questions connexes