Swift – Guarda la puntuación más alta usando NSUserDefaults

Estoy usando Swift para hacer un juego. Quiero guardar la puntuación más alta de los usuarios usando NSUserDefaults. Sé cómo crear una nueva variable NSUserDefaults en mi archivo AppDelegate:

let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults() 

¿Pero cómo configuro / obtengo esto en mis controladores de vista?

Al principio, NSUserDefaults es un diccionario (NSDictionary, creo). Cada aplicación tiene sus propios valores predeterminados de usuario, por lo que no puede acceder a los valores predeterminados del usuario desde ninguna otra aplicación.

Si el usuario (el que juega su juego) hace una nueva puntuación más alta, debe guardar esa puntuación más alta de la siguiente manera:

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

Luego, cuando desee obtener el mejor puntaje que el usuario haya obtenido, debe “leer” la puntuación más alta del diccionario de esta manera:

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

En Swift 3.0

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

Ahorro:

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

recuperando

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

Swift 4

Valor ajustado

UserDefaults.standard.set("TEST", forKey: "Key") // setString

Recuperar

UserDefaults.standard.string(forKey: "Key") // getString

retirar

UserDefaults.standard.removeObject(forKey: "Key")

Puedes usar la siguiente pieza de código:

 // Your score var var score:Int = 0 //save score = NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "score") // load without starting value nil problems if NSUserDefaults.standardUserDefaults().setIntergerForKey:("score") != nil { score = NSUserDefaults.standardUserDefaults().setIntergerForKey:("score") }