0
votes

Sauvegarder une variable entière à Swift

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. xxx


7 commentaires

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") 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


3 Réponses :


1
votes

swift 4

Valeur de réglage xxx

obtenez xxx

supprimer xxx

dans votre ViewDiDload xxx

puis xxx


0 commentaires

0
votes

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


0 commentaires

2
votes

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)
}


0 commentaires