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