【问题标题】:NSUserDefaults valueForKey errorNSUserDefaults valueForKey 错误
【发布时间】:2016-06-14 06:03:53
【问题描述】:
我正在尝试在一个简单的游戏中保存一个高分。我是 swift 2 的新手,不知道我做错了什么。我收到错误消息“‘int’类型的值没有‘valueForKey’的成员。这是我上次尝试失败时的代码。
var highScoreDefault = NSUserDefaults.standardUserDefaults()
if(highScoreDefault.valueForKey("highScore") != nil){
highScore = highScore.valueForKey("highScore") as NSInteger! //error here
}
newFunc
score += 1
if (score > highScore){
highScore = score
var highScoreDefault = NSUserDefaults.standardUserDefaults()
highScoreDefault.setValue(highScore, forKey: "highScore")
highScoreDefault.synchronize()
}
highscoreLbl.text = "\(highScore)"
【问题讨论】:
标签:
swift
swift2
nsuserdefaults
【解决方案1】:
你必须像这样保存它:NSUserDefaults.standardUserDefaults().setInteger(highScore, forKey: "highScore")
然后像这样检索它:var highScore: Int = NSUserDefaults.standardUserDefaults().integerForKey("highScore")
【解决方案2】:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setValue(value, forKey: "highScore")
Apple 建议仅在应用程序即将退出等特殊情况下调用 synchronize()。
synchronize() 方法,定期自动调用
间隔,使内存中的缓存与用户的默认值保持同步
数据库。
【解决方案3】:
在 NSUserDefault 中设置值非常简单
NSUserDefaults.standardUserDefaults().setInteger(yourScore, forKey: "highScore")
NSUserDefaults.standardUserDefaults().synchronize()
【解决方案4】:
试试这个:
let highScoreDefault = NSUserDefaults.standardUserDefaults()
//Set
highScoreDefault.setInteger(yourInt, forKey: "intKey")
highScoreDefault. synchronize()
//Get
highScoreDefault.integerForKey("intKey")