有2个ViewController,第一个是用户获得积分和高分标签。
在第二个ViewController中,代码将计算用户是否打破了旧的高分(如果是)-当然会发生变化。但!当我退出应用程序并再次开始播放时,高分标签会显示我的最后分数,而不是最高分。
这是我的代码:
第一个ViewController:
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.synchronize()
highScore.text = String(stringInterpolationSegment: oldScore)
第二个ViewController:
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
if score > oldScore {
defaults.setInteger(score, forKey: "oldScore")
defaults.synchronize()
var money = defaults.valueForKey("oldScore") as! Int
oldScore = money
} else {
defaults.setInteger(oldScore, forKey: "oldScore")
defaults.synchronize()
var money = defaults.valueForKey("oldScore") as! Int
oldScore = money
}
我在视图控制器代码中也获得了
var oldScore = Int()
,但在视图控制器的类之外。此外,我还有一个“开关”按钮,其状态为“开”。但是有时我/用户想要将其更改为关闭,在退出应用程序并重新启动后如何保存它作为用户的选择?
最佳答案
首先检查是否为NSUserDefault
设置了oldScore
。如果未设置,则初始化oldScore
,否则不初始化。只需获取oldScore的值,并将其与新分数进行比较,然后相应地设置该值
if (NSUserDefaults.standardUserDefaults().objectForKey(oldScore) == nil) {
oldScore = Int()
}
在您的Second View Controller中,首先将
NSUserDefault's oldScore
的值放入变量,然后检查其是否等于Score
。如果只有它,则像这样设置:let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var oldScoreCheck = defaults.valueForKey("oldScore") as! Int
if score > oldScoreCheck {
defaults.setInteger(score, forKey: "oldScore")
defaults.synchronize()
}
关于iphone - swift 记住2个ViewController中的高分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31891690/