我使用Xcode和swift已经在我的xcode项目上工作了几个星期。今天当我开始运行模拟器时,我的highScore设置为0.这是第一次,它始终保持得分。这与模拟器有什么关系,或者我的代码有问题。如果highScore可以在任何给定时间重置为0,我当然不希望用户使用我的应用程序。
class GameScene: SKScene {
let labelHighScore = SKLabelNode()
var highScore = 0
override func didMoveToView(view: SKView) {
var HighscoreDefault = NSUserDefaults.standardUserDefaults()
if(HighscoreDefault.valueForKey("Highscore") != nil) {
highScore = HighscoreDefault.valueForKey("Highscore") as! NSInteger
labelHighScore.text = NSString(format: "%i", highScore) as String
}
labelHighScore.fontSize = 70
labelHighScore.position = CGPointMake(frame.midX, frame.midY + 305)
labelHighScore.fontColor = UIColor.blackColor()
self.addChild(labelHighScore)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if ball != blackB && ball.texture == blackB.texture {
score += 1
labelScore.text = String(score)
if(score > highScore) {
highScore = score
labelHighScore.text = String(highScore)
var HighscoreDefault = NSUserDefaults.standardUserDefaults()
HighscoreDefault.setValue(highScore, forKey: "Highscore")
HighscoreDefault.synchronize()
}
}
答案 0 :(得分:1)
除非您使用相同的设备,否则不会保留相同的用户默认值。如果您一直使用模拟器,则会知道它们会不时重置。我的建议是明确设置高分的默认值并运行。注释掉设置默认值并重新运行的代码。它应该保持这个价值。