2010-06-08 5 views
2

J'utilise NSUserDefaults pour stocker certaines choses.NSUserDefaults - rechargement nécessaire?

Cela fonctionne bien, mais seulement après avoir redémarré l'application. J'utilise: [prefs synchronize]; Je pensais que cela enregistrerait immédiatement les données, mais à la place les préférences resteraient nulles.

Si vous avez une idée ou déjà l'utiliser, faites-le moi savoir. Merci pour toute aide.

Wallou

+1

Veuillez indiquer le code qui écrit dans NSUserDefaults. Lorsque vous utilisez synchroniser les modifications doivent être enregistrées. Si elles sont nulles, cela signifie probablement que null est la valeur qui leur a été écrite. Essayez de rechercher dans le débogueur ou NSLog sur la valeur juste avant de le persister. Assurez-vous également d'utiliser la bonne méthode: setObject/setBool etc. sur l'objet NSUserdefaults. – RickiG

+0

Les commentaires de RickiG sont bons, je veux juste demander si peut-être vous utilisez NSUserDefaultsController, parce que cela ajoute d'autres façons d'être confus. – JWWalker

+0

hey, voici mon code: NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults]; \t \t // enregistrement d'un NSString \t [prefs setObject: identField.text forKey: @ "mail"]; \t [prefs setObject: pwdField.text forKey: @ "mot de passe"]; \t \t \t \t [synchronisation de préfs]; les valeurs sont null jusqu'à ce que je redémarre mon application. Ensuite, ils ont les bonnes valeurs. – wallou

Répondre

2

J'ai finalement réussi à résoudre mon problème. Je faisais la même chose à deux endroits différents (ancien code oublié quelque part). Pour plus d'informations, voici mon code:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
// saving an NSString 
[prefs setObject:identField.text forKey:@"mail"]; 
[prefs setObject:pwdField.text forKey:@"password"]; 
mail=[prefs objectForKey:@"mail"]; 
pwd=[prefs objectForKey:@"password"]; 

//This is to synch prefs 
[prefs synchronize]; 
NSLog(@"pwd: %@, username:%@", mail, pwd);