J'utilise Cela fonctionnait bien jusqu'à la semaine dernière, mais maintenant, parfois lorsque je passe à d'autres applications et revenez après un petit moment, je vois que cette page d'enregistrement se charge pendant qu'elle ne devrait pas. p> li>
i utilisé Est-ce que quelqu'un sait pourquoi les valeurs sont réinitialisées? P>
[nsuserdefaults standarddefaults] code> pour stocker un booléen pour voir si c'est la première fois que cette application est lancée ... Si tel est le cas, l'application doit afficher une fenêtre d'enregistrement. p>
nslog code> Pour voir ce qui est stocké dans
[nsuserdefaults standarddefault] code> et je vois que les valeurs que j'ai stockées ont été définies sur
nil ( null) code> pendant que je ne l'ai pas fait ça nulle part dans mon code. p> li>
ul>
4 Réponses :
Assurez-vous que vous appelez [[NSUserDefaults StandardUserDefaultS] Synchroniser] Code> Juste après la définition des préférences code> et que vous n'écracez pas vos préférences. P>
Ouais, j'ai appelé ça! Comme je l'ai décrit dans ma question! Cela fonctionnait bien pendant longtemps et cela n'arrive pas à chaque fois, il doit donc être synchronisé!
Il y a longtemps, j'ai rencontré cette question, il s'agit d'une bibliothèque tierce partie que j'utilisais utilise la même clé lors de la conservation des valeurs sur NSUserDefault CODE>. Essayez de rechercher votre projet pour cette clé, peut-être quelque chose d'autre est la réinitialisation. P>
Tout d'abord, je l'ai fait. Trouvé aucune clé similaire. Et juste pour vous assurer que j'ai changé la clé. Mais le même problème existe. Même s'il y a une chose qui réinitialisait cette clé, une chose n'a aucune explication: pourquoi la valeur est restaurée à la bonne lorsque j'ai arrêté et relancer ???
Pour moi, c'était le cas que j'avais mis dans un code un certain retour et que j'avais oublié que cela effacera mes paramètres par défaut de l'application.
Voici les moyens de perdre des valeurs dans On dirait que, de la discussion ici, que vous avez exclu 1,2,4, et probablement 3 et 5. Le seul prochain étape de débogage, je peux penser à stocker le téléphone de test dans un tiroir verrouillé à Toutes les heures. p>
Mais je laisserais mon argent sur un problème intermittent causant n ° 1. Pour cela, nous aurions besoin de code posté pour enquêter. P>
Un% élevé de Jetons que sur la liste pour cette question à # 2.5. Là encore, aurait besoin de code pour confirmer. P> NSUserDefaults CODE>, par ordre de vraisemblance: P>
Nsuserdefault code> Les problèmes postés ici portent sur la conservation des bools et d'autres types scalaires. On dirait que l'OP sait sur l'emballage dans les nsnumbers, mais les bools en particulier sont envahis car il est facile de confondre des valeurs fastes-y comme NO et NIL, et
Nsnull code> instance. P>
Si cela se produit pendant le test, c'est normal. Le fait que le programme effectue même cette décision (dois-je montrer la page d'enregistrement?) Suggère que l'application a été arrêtée de force et commence à partir de zéro. Lors de l'essai, cela peut entraîner la suppression de l'application Sandbox lorsque l'application est rechargée de Xcode. Dans la vie réelle d'un véritable utilisateur, cependant, cela n'arrivera pas (à moins que l'utilisateur supprime l'application de l'appareil). P>
Vous avez des liens ou des sources qui remontent à cela, ou est-ce une expérience personnelle?
@ CBH2000 Je ne pense pas que je l'ai vu arriver récemment.
Êtes-vous sûr que vous avez appelé
[[NSUserDefault StandardUserDefault] Synchroniser] code>?
Ouais, j'ai appelé ça! Comme je l'ai décrit dans ma question! Cela fonctionnait bien pendant longtemps et cela n'arrive pas à chaque fois, il doit donc être synchronisé!
Votre question ne mentionne jamais l'appel de synchronisation. Êtes-vous positif que vous appelez Synchroniser après avoir changé une valeur par défaut?
Ouais, j'appelle
synchroniser code> à chaque fois que je change une valeur dans
standarduerdefault code>