我的NSUserDefaults没有正确保存我的游戏高分。当我正在玩(测试)游戏时,它可以正常工作但是当我退出(终止)并重新启动或当我从一个场景转换到另一个场景时,我的高分回到0.任何人都可以帮我解决这个问题吗?提前谢谢。
var score = 6
NSUserDefaults.standardUserDefaults().integerForKey("highscore")
//Check if score is higher than NSUserDefaults stored value and change NSUserDefaults stored value if it's true
if score > NSUserDefaults.standardUserDefaults().integerForKey("highscore") {
NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "highscore")
NSUserDefaults.standardUserDefaults().synchronize()
}
NSUserDefaults.standardUserDefaults().integerForKey("highscore")
答案 0 :(得分:4)
问题是这个出现两次的陈述什么都没做:
NSUserDefaults.standardUserDefaults().integerForKey("highscore")
它从用户默认值中获取"highscore"
键的值,但是立即将其抛出,因为您没有将结果分配给任何内容,例如:
let highscore = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
因此,即使您成功存储用户默认值中的高分,您也永远不会检索 - 所以没有理由认为它不是被保存,因为你已经没有办法知道是否已被保存。