2012-07-25 4 views
0

Dans iOS4, lorsque vous enregistrez NSUserDefaults, les informations sont enregistrées. Mais alors, si l'application devient inactive, et je tue l'application (en double-cliquant sur le bouton d'accueil, puis en terminant l'application), et relancez l'application, les NSUserDefaults ne sont pas lus.Informations persistantes sur NSUserDefaults entre les terminaisons d'application

Maintenant, est-ce le comportement par défaut de NSUserDefaults que si l'application est terminée en raison de l'un des problèmes, le prochain lancement ne stockera pas l'information?

L'appel que je utilise pour conserver l'information est: -

[[NSUserDefaults standardUserDefaults] registerDefaults: 
    [NSDictionary dictionaryWithObjectsAndKeys: 
     "Some date", @"Validity", 
     nil]]; 
+0

duplication possible de [Pourquoi NSUserDefaults ne sauvegarde pas mes valeurs?] (Http://stackoverflow.com/questions/2622754/why-is-nsuserdefaults-not-saving-my-values) –

+0

SO est plein de cela exact même question n00b. Je ne crois pas que vous ne pouviez pas google 'NSUserDefaults ne sauvegarde pas' ... Voter pour la fermeture. –

Répondre

1

après votre inscription par défaut ajouter cette

[[NSUserDefaults standardUserDefaults] synchronize]; 

jusqu'à ce que vous synchoronize, le standardUserDefaults donne des valeurs actuelles/correcte tant que l'application est vivante. Une fois l'application terminée, puisque vous n'avez pas synchronisé les standardsUserDefaults, l'application lira les valeurs non synchronisées au prochain lancement. Exemple: Pensez-y comme un google doc que vous êtes en train de modifier.

La fonction d'enregistrement automatique de google document est équivalente à nsuserdefaults synchornize. Si vous fermez le navigateur avant que les modifications que vous avez apportées au document aient été enregistrées automatiquement, vous verrez l'ancien contenu la prochaine fois que vous le rechargerez.

1

L'appel dont vous parlez pour conserver les valeurs par défaut de l'utilisateur, registerDefaults, ne conserve rien sur le disque. Ce que registerDefaults fait est d'initialiser les valeurs par défaut à utiliser pour l'application si elle ne peut pas en trouver sur le disque. Vous devez le faire à chaque lancement d'application, généralement dans la méthode initialize pour le délégué de l'application. Une fois que votre application est en cours d'exécution, elle modifiera généralement les paramètres par défaut de l'utilisateur. Chaque fois que vous souhaitez enregistrer ces paramètres par défaut modifiés sur le disque, vous devez appeler:

[[NSUserDefaults standardUserDefaults] synchronize]; 

Une fois que les paramètres par défaut ont été enregistrés, ils seront chargés automatiquement sur tous les lancements d'application ultérieurs.

Questions connexes