J'essaie de sauvegarder une variable entière dans SWIFT / XCode de sorte que lorsque l'utilisateur ouvre l'application, le nombre qu'ils incrémentent reste le Sames (est enregistré). Jusqu'à présent, pas de chance avec ce code. Le numéro remonte toujours à zéro quand je relais l'application. Le bouton ci-dessous incrémente simplement la variable de fumée d'ici 1, je souhaite enregistrer ces données.
Merci pour votre temps. p>
3 Réponses :
swift 4
Valeur de réglage p> obtenez p> supprimer p> dans votre puis p> ViewDiDload code> p>
Vous pouvez utiliser cette ligne de code pour obtenir des données de userdefaults code>. S'il y a des données, il est renvoyé ou renvoie 0.
let smoke = UserDefaults.standard.object(forKey: "smoke") ?? 0
Dans un endroit approprié, vous devez initialiser votre propriété fumée code> avec la valeur stockée dans
userdefault code>. Par exemple, vous voudrez peut-être le faire dans
ViewDidLoad Code>, ou vous pouvez simplement le faire directement dans l'initialiseur où vous déclarez la propriété.
var smoke = UserDefaults.standard.integer(forKey: "smoke")
@IBAction func incrementSmoke(_ sender: UIButton) {
smoke += 1
UserDefaults.standard.set(smoke, forKey: "smoke")
numDaysLabel.text = String(smoke)
}
Vous ne récupérez pas la valeur de la session précédente de «fumée» de UserDefault à tout moment du code que vous avez montré.
Qu'entendez-vous par la précédente "session"?
Je pense que je sais ce que tu veux dire, je veux fondamentalement que l'étiquette reste la même après chaque session, comment puis-je faire cela?
De l'heure précédente, vous avez exécuté l'application. Vous enregistrez la valeur sur UserDefault, mais vous devez ensuite affecter la valeur enregistrée à la variable lorsque vous redémarrez l'application si vous souhaitez l'utiliser. Il suffit probablement de mettre
fumée = par défaut.Integer (Forge: "Fumée") code> dans la méthode init.
Donc, je dois économiser quelque chose à la variable "fumée" pour la prochaine fois? D'accord merci
Vous ne pouvez rien économiser à une variable à long terme, ils n'existent que temporairement et se réinitialisent à toute la valeur initiale (dans votre code, 0) à chaque fois. Pour le stockage à long terme, vous devez utiliser une sorte de méthode externe comme UserDefaults, mais vous devez ensuite prendre la valeur stockée de là et l'affecter à la variable chaque fois que vous l'initialisez.
fumée = par défaut.Integer (Forge: "Fumée"). Mettre cela dans la viefdidload fonctionné pour moi