2010-06-25 7 views
2

J'ai réussi à créer le fichier Settings.bundle de mon application et les éléments dont j'ai besoin. Je peux ouvrir le panneau dans l'application Paramètres, modifier les valeurs, quitter l'application Paramètres revenir et confirmer qu'ils sont comme je les ai laissés.Les modifications apportées aux préférences d'application ne sont pas sauvegardées ou ne sont pas disponibles immédiatement?

Je lance mon application et lire ces préférences, je ne vois pas les changements - pas après le premier lancement. Cependant, si je quitte mon application et la relance, je vois les changements!

Mon plist est mis en place comme si ...

 
Type: PSToggleSwitchSpecifier (String) 
Key: EmailOnMessage (String) 
Title: EmailOnMessageTitle (String) 
DefaultValue: YES (Boolean) 
TrueValue: 1 (Number) 
FalseValue: 0 (Number) 

Je lis les préférences par docs Apple ...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

[defaults integerForKey:@"EmailOnMessage"]; 

Et je fais cela dans la méthode applicationDidBecomeActive dans mon AppDelegate. Pourquoi mon application ne verrait-elle pas les mises à jour ici?

Ces paramètres ne sont-ils pas synchronisés avant la fin du cycle de vie de l'application? Si oui, où?

+1

Appelez-vous '[defaults synchronize]' avant de lire les valeurs? – drawnonward

+0

Non, je n'étais pas. Je ne pensais pas que je devais. Sensationnel. Merci beaucoup. –

Répondre

2

Le paramètre NSUserDefaults n'est pas synchronisé après chaque modification. Il peut être synchronisé à intervalles réguliers par le système, mais si vous souhaitez utiliser les nouvelles valeurs immédiatement, vous devez appeler explicitement la méthode synchronize.

Questions connexes