我正在使用Swift制作游戏。我想使用NSUserDefaults保存用户的最高分。我知道如何在我的AppDelegate文件中创建一个新的NSUserDefaults变量:
let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults()
但是我该如何在我的视图控制器中设置/获取它呢?
我正在使用Swift制作游戏。我想使用NSUserDefaults保存用户的最高分。我知道如何在我的AppDelegate文件中创建一个新的NSUserDefaults变量:
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
}
if let highscore = userDefaults.valueForKey("highscore") {
- Mike Ssynchronize
。jigar的答案使用了适当的Swift 2 API(除了创建一个新的NSUserDefaults
实例)。 - rmaddy在 Swift 中
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
}
UserDefaults value(forKey:)
读取 Int
值,而应该使用 UserDefaults integer(forKey:)
。除非你有明确的特定原因,否则不要使用 KVC。 - rmaddySwift 5
设置值
UserDefaults.standard.set("TEST", forKey: "Key")
// 设置字符串
检索值
UserDefaults.standard.string(forKey: "Key")
// 获取字符串
删除值
UserDefaults.standard.removeObject(forKey: "Key")
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)")
NSUserDefaults
实例。使用 NSUserDefaults.standardUserDefaults()
。 - rmaddy// 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")
}
NSUserDefaults
,它并不是为此而设计的,它不是一个数据库。相反,应该使用NSArchiver
将数据保存到文件中。 - zaph