title: NSUserDefaults Saving Score
body: <p>I am looking for some advice when it comes to saving a score in my app - I currently have a coin count working in which through my HUD class when I collide through Coins the value increases accordingly. My next step is trying to initiate a high-score that initiates, after some research I think the topic I am looking into is based around <code>NSUserDefaults</code>..</p>
  
  <p>The current code :</p>
  
  <pre><code>   import SpriteKit
  
     class HUD: SKNode {
  
  
     //An SKLabelNode to print the coin score:
     let coinCountText = SKLabelNode(text: "000000")
  
  
     func createHUDNodes(){
  
     // Configure the coin text label:
     coinCountText.fontName = "STHupo-Heavy-Italic"
     let coinTextPosition = CGPoint(x: -cameraOrigin.x + 770, y: coinPosition.y)
     coinCountText.position = coinTextPosition
  
     coinCountText.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.left
     coinCountText.verticalAlignmentMode = SKLabelVerticalAlignmentMode.center
  
     // Add the text label and coin icon to the HUD:
     self.addChild(coinCountText)
  
     }
  
  
     func setCoinCountDisplay(newCoinCount:Int) {
  
     let formatter = NumberFormatter()
     let number = NSNumber(value: newCoinCount)
     formatter.minimumIntegerDigits = 6
     if let coinStr =
          formatter.string(from: number) {
  
          // Update the label node with the new count:
          coinCountText.text = coinStr
      }
  }
  </code></pre>
  
  <p>Working in the HUD class I think naturally I would need to create another 'SKlabelNode'for the highscore node which I can duplicate from the code that works above.. my problem is how can I implement a highscore feature in the app, as when closed and re-opening the application it will remember the highscore..</p>
  
  <p>I assume the following code would need to be added but I do not understand how it ties together in the class.</p>
  
  <pre><code>     var currentHighScore =  
       NSUserDefaults.standardUserDefaults().integerForKey("coin_highscore")
  
       var highScoreLabel = SKLabelNode(fontNamed:"STHupo-Heavy-Italic")
       highScoreLabel.text = ""
       highScoreLabel.fontSize = 45
       highScoreLabel.position = CGPoint(x: viewSize.width * 0.5, y: viewSize.height * 0.30)
       self.addChild(highScoreLabel)
  
       if (score &gt; currentHighScore) {
  
          NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "player_highscore")
          NSUserDefaults.standardUserDefaults().synchronize()
  
          highScoreLabel.text = "New High Score: \(score) !"
  
  
      } else {
  
          highScoreLabel.text = "Better Luck Next Time: \(score)"
      }
  }
  </code></pre>
  
  <p>Any advice on how I could integrate this code would be much appreciated.</p>
  
  <p>,  AJ</p>
  
  <hr>
  
  <p>Revised :</p>
  
  <pre><code>     else if nodeTouched.name == "returnToMenu"{
       // Transition to the main menu scene
       self.view?.presentScene(MenuScene(size: self.size),transition.crossFade(withDuration: 0.6))
  
       let currentHighScore = UserDefaults.standard.integer(forKey: "Player_highscore")
  
       let highScoreLabel = SKLabelNode(fontNamed:"STHupo-Heavy-Italic")
       highScoreLabel.text = "Value: \ (String(describing: coin.value))"
       highScoreLabel.text = ""
       highScoreLabel.fontSize = 45
       highScoreLabel.zPosition = 100
       highScoreLabel.position = CGPoint(x: 50, y: 50)
  
       self.addChild(highScoreLabel)
  
       if (coin.value &gt; currentHighScore) {
  
       UserDefaults.standard.set(coin.value, forKey: "Player_highscore")
  
       UserDefaults.standard.synchronize()
  
       highScoreLabel.text = "New High Value: \(String(describing: coin.value)) !"
  
  
       } else {
  
       highScoreLabel.text = "Better Luck Next Time: \(String(describing: coin.value))"
  
                              }
                      }
              }
  
  }
  </code></pre>
  
  <p>I am assuming it's the referencing to my original HUD that is causing the problem? In my coin class I declared the coin.value = 5, each time the coin is collected by coinCountDisplay increases accordingly. However still does not show - :/</p>