J'utilise UserDefaults pour enregistrer une petite valeur à laquelle il faut parfois écrire. Je crois que je l'ai configuré correctement, mais je ne sais pas pourquoi cela ne fonctionne pas après que j'ai quitté le simulateur et que je l'ai redémarré. La mise en place:La valeur de défaut d'utilisateur ne persiste pas malgré la synchronisation?
let defaults = UserDefaults.standard
Il est ensuite écrit/modifié comme suit:
defaults.set(true, forKey: "defaultsChecker")
defaults.synchronize()
Utilisation d'une instruction d'impression que je peux voir que la valeur est en effet mis à jour d'être nul à être vrai. Cependant, la vérification de la valeur dans un viewDidLoad
au début de tourner le simulateur à nouveau (après avoir été quit) comme suit:
print("The value is is \((defaults.value(forKey: "defaultsChecker") as! Bool)))")
Cela renvoie toujours nul au début, ce qui signifie qu'il ne doit pas être sauvé/persistent dans la fermeture et la réouverture du simulateur. Je ne sais pas pourquoi c'est le cas.
Etes-vous sûr pas où dans le code que vous réinitialisez la valeur pour « defaultsChecker » clé? – Priyal
En supposant que vous avez vérifié l'orthographe de la clé ("defaultsChecker"), vous devez rechercher "defaultsChecker" dans le projet entier pour vous assurer qu'il n'est pas défini sur "false" n'importe où. BTW, je vous suggère de déclarer une constante avec la valeur de « defaultsChecker » et l'utiliser comme une clé pour éviter l'erreur de frappe mal quand vous avez besoin de l'utiliser ... –
Ne pas utiliser 'valeur (forKey :) 'lire une valeur de' UserDefaults' à moins que vous n'ayez un besoin clair d'utiliser le codage de valeur-clé. Vous définissez un 'Bool' donc lisez un' Bool' en utilisant 'bool (forKey:)'. – rmaddy