Ios Highscore在应用程序关闭或视图更改时重置。如何永久保持Swift的高分?

Ios Highscore在应用程序关闭或视图更改时重置。如何永久保持Swift的高分?,ios,swift2,nsuserdefaults,Ios,Swift2,Nsuserdefaults,实例变量: var Score: Int64 = 0 var highscore: Int64 = 0 func saveHighScore(high:Int) { NSUserDefaults.standardUserDefaults().setInteger(high, forKey: "highscore") } func highScore() -> Int { NSUserDefaults.standard

实例变量:

var Score: Int64 = 0

 var highscore: Int64 = 0
      func saveHighScore(high:Int) {
        NSUserDefaults.standardUserDefaults().setInteger(high, forKey:        "highscore")

    }
  func highScore() -> Int {
   NSUserDefaults.standardUserDefaults().integerForKey("highscore")
   } func resetHighScore() {NSUserDefaults.standardUserDefaults().removeObjectForKey("highscore")
    }

///METHOD. ALL OF THIS IS WORKING FINE. HIGH SCORE SHOWS AND UPDATES WHILE IN THE GAME.

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
  }
 @IBAction func Ans1(sender: AnyObject) {
    if(CorrectAnswer) == "1" {

        // Calculate the number of points
        Score += 10
        scoreLabel.text = "Score:\(Score)"
        if (Score > highscore) {
            highscore = Score
            highScoreLabel.text = NSString(format: "High Score : %i",    highscore) as String
        }

我需要在这里添加什么吗?要在重新启动应用程序时保存和重新加载数据?

在代码开头,变量“highscore”重置为0。应使用“if”语句查看nsuserdefaults中是否存在键为“highscore”的整数,如果没有,请将键“highscore”的值设置为0,否则,将变量highscore设置为等于键“highscore”的值。我为缺少代码提前表示歉意。

似乎您从未调用您的方法
saveHighScore()
highscore()
。相反,每次加载视图时,highscore变量都设置为0

在您的生命周期方法中,如
viewDidLoad()
viewdidappease()
,您必须调用并设置它,如下所示:
highscore=highscore()
。这将获得用户默认值,并将视图中的highscore变量设置为保存的内容

在您的
direceivememorywarning()
或更好的
viewwilldiscome()
中,您应该调用
saveHighScore(highscore)


这样,您的所有进度都应该通过关闭和重新打开应用程序来保存和保持

NSUserDefaults是您需要的:

let highscore = 1000
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setValue(highscore, forKey: "highscore")
userDefaults.synchronize()

Ref:

仅为确认,每当视图消失或应用程序进入后台时,您希望在NSUserDefaults中删除ObjectForkey?方法
resetHighScore()
何时调用?我是否可以观察到
forKey:“highscore”
是一个相当奇怪的键。你添加了一些符号或者只是在复制粘贴时出现的?我不确定你关于删除ObjectForKey的意思是什么?这些奇怪的符号是在我发布问题时出现的。它们实际上不在我的代码中。resetHighScore在其他任何地方都不会被调用。你能告诉我代码中应该放在哪里吗?它在视图中加载吗?