Ich verwende Swift, um ein Spiel zu erstellen. Ich möchte die hohe Punktzahl der Benutzer mit NSUserDefaults speichern. Ich kann eine neue NSUserDefaults-Variable in meiner AppDelegate-Datei erstellen:
let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults()
Aber wie kann ich dies in meinen View-Controllern einstellen?
Zuerst ist NSUserDefaults ein Wörterbuch (NSDictionary, denke ich). Jede App verfügt über eigene Benutzervorgaben, sodass Sie nicht über eine andere App auf die Benutzervorgaben zugreifen können.
Wenn der Benutzer (derjenige, der Ihr Spiel spielt) einen neuen Highscore erzielt, müssen Sie diesen Highscore wie folgt speichern:
let highscore = 1000
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setValue(highscore, forKey: "highscore")
userDefaults.synchronize() // don't forget this!!!!
Wenn Sie dann den besten Highscore des Benutzers erhalten möchten, müssen Sie den Highscore aus dem Wörterbuch folgendermaßen "lesen":
if let highscore = userDefaults.valueForKey("highscore") {
// do something here when a highscore exists
}
else {
// no highscore exists
}
In Swift 3.0
let highScore = 1000
let userDefults = UserDefaults.standard //returns shared defaults object.
Speichern:
userDefults.set(highScore, forKey: "highScore") //Sets the value of the specified default key to the specified integer value.
abrufen:
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
Set Value
UserDefaults.standard.set("TEST", forKey: "Key")
// setString
Abrufen
UserDefaults.standard.string(forKey: "Key")
// getString
Entfernen
UserDefaults.standard.removeObject(forKey: "Key")