Question

Dans mon application j'utilise un objet NSUserDefaults pour stocker le nom d'utilisateur, mot de passe et l'URL du serveur dans l'application Réglages intégré. S'il n'y a pas de données enregistrées, l'utilisateur est présenté une interface de connexion et lors de la connexion et le nom d'utilisateur succesful mot de passe sont enregistrés. Puis dans mon application, j'ai vue qui affiche ces informations, mais le texte est manquant comme si les données n'a pas été enregistré aux paramètres encore. Voici le code:

...
NSUserDefaults* appSettings = [NSUserDefaults standardUserDefaults];
[appSettings setObject:username forKey:USERNAME];
[appSettings setObject:password forKey:PASSWORD];

if ( [appSettings synchronize] ) {

   // display an alert with a positive message
} else {
   // display an alert with a negative message

}

Alors, après la connexion du message positif est affiché, mais quand je récupérer les données à nouveau, il n'y a rien là, à moins que je redémarre l'application.

Que dois-je faire pour enregistrer les données immédiatement, ou au moins avant qu'un autre contrôleur de vue doit lire les paramètres?

Était-ce utile?

La solution

L'objet NSUserDefaults stocke ses données dans la mémoire, et est un objet global (à votre demande, de toute façon). Ainsi, tout ce que vous stockez dans il devrait être immédiatement disponible à tout ce qui tente d'y accéder par la suite. Vous n'avez pas besoin d'appeler ici synchronisent. Si vous n'êtes pas obtenir vos données, vous devriez vérifier l'ordre de vos appels pour vous assurer qu'ils sont appelés quand vous pensez qu'ils sont.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top