Swift – 使用NSUserDefaults保存高分

我正在用Swift做游戏。 我想用NSUserDefaults保存用户高分。 我知道如何在我的AppDelegate文件中创build一个新的NSUserDefaultsvariables:

let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults() 

但是,我如何设置/得到这个在我的视图控制器?

起初,NSUserDefaults是一个字典(我认为NSDictionary)。 每个应用程序都有自己的用户默认值,所以你不能从任何其他应用程序访问用户的默认值。

如果用户(玩你游戏的玩家)取得了新的高分,那么你必须保存这样的高分:

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

然后,当你想得到最好的高分,用户必须从字典中“读”高分:

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

在Swift 3.0中

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

保存:

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

检索:

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

你可以使用下面的一段代码:

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