web-dev-qa-db-fra.com

Swift - Sauvegarde des meilleurs scores avec NSUserDefaults

J'utilise Swift pour faire un jeu. Je veux enregistrer le meilleur score des utilisateurs avec NSUserDefaults. Je sais comment créer une nouvelle variable NSUserDefaults dans mon fichier AppDelegate:

let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults()

Mais comment puis-je définir/obtenir cela dans mes contrôleurs de vue?

13
user2397282

Au début, NSUserDefaults est un dictionnaire (NSDictionary, je pense). Chaque application a ses propres paramètres utilisateur par défaut. Vous ne pouvez donc pas accéder aux paramètres utilisateur par défaut d'une autre application.

Si l'utilisateur (celui qui joue votre jeu) crée un nouveau record, vous devez enregistrer ce dernier comme suit:

let highscore = 1000
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setValue(highscore, forKey: "highscore")
userDefaults.synchronize() // don't forget this!!!!

Ensuite, lorsque vous voulez obtenir les meilleurs scores que l'utilisateur ait créés, vous devez "lire" les meilleurs scores du dictionnaire comme ceci:

if let highscore = userDefaults.valueForKey("highscore") {
    // do something here when a highscore exists
}
else {
    // no highscore exists
}
34
beeef

Dans Swift 3.0

let highScore = 1000
let userDefults = UserDefaults.standard //returns shared defaults object.

Sauvegarde:

userDefults.set(highScore, forKey: "highScore") //Sets the value of the specified default key to the specified integer value.

récupération:

if let highScore = userDefults.value(forKey: "highScore") { //Returns the integer value associated with the specified key.
        //do something here when a highscore exists
    } else {
        //no highscore exists
}
11
Ashok R
var defaults=NSUserDefaults()
var highscore=defaults.integerForKey("highscore")

if(Score>highscore)
{
    defaults.setInteger(Score, forKey: "highscore")
}
var highscoreshow=defaults.integerForKey("highscore")

lblHighScore.text="\(highscoreshow)
println("hhScore reported: \(lblHighScore.text)")
lblPlayScore.text="\(Score)"
println("play reported: \(lblPlayScore.text)")
0
jigar parmar