Swift - Saving highscore using NSUserDefaults

后端 未结 5 1625
天命终不由人
天命终不由人 2020-11-28 15:27

I\'m using Swift to make a game. I want to save the users high score using NSUserDefaults. I know how to create a new NSUserDefaults variable in my AppDelegate file:

相关标签:
5条回答
  • 2020-11-28 15:34

    At first, NSUserDefaults is a dictionary (NSDictionary I think). Every app has its own user defaults, so you cannot access the user defaults from any other app.

    If the user (the one who plays your game) makes a new highscore, you have to save that highscore like this:

    let highscore = 1000
    let userDefaults = NSUserDefaults.standardUserDefaults()
    userDefaults.setValue(highscore, forKey: "highscore")
    userDefaults.synchronize() // don't forget this!!!!
    

    Then, when you want to get the best highscore the user made, you have to "read" the highscore from the dictionary like this:

    if let highscore = userDefaults.valueForKey("highscore") {
        // do something here when a highscore exists
    }
    else {
        // no highscore exists
    }
    
    0 讨论(0)
  • 2020-11-28 15:39

    In Swift 3.0

    let highScore = 1000
    let userDefults = UserDefaults.standard //returns shared defaults object.
    

    Saving:

    userDefults.set(highScore, forKey: "highScore") //Sets the value of the specified default key to the specified integer value.
    

    retrieving:

    if let highScore = userDefults.value(forKey: "highScore") { //Returns the integer value associated with the specified key.
            //do something here when a highscore exists
        } else {
            //no highscore exists
    }
    
    0 讨论(0)
  • 2020-11-28 15:41

    Swift 4

    Set Value

    UserDefaults.standard.set("TEST", forKey: "Key") //setString

    Retrieve

    UserDefaults.standard.string(forKey: "Key") //getString

    Remove

    UserDefaults.standard.removeObject(forKey: "Key")

    0 讨论(0)
  • 2020-11-28 15:50

    You can use below piece of code:

    // Your score var
    
    var score:Int = 0
    
    //save
    
    score = NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "score")
    
    // load without starting value nil problems
    
    if NSUserDefaults.standardUserDefaults().setIntergerForKey:("score") != nil {
    
    score = NSUserDefaults.standardUserDefaults().setIntergerForKey:("score")
    
    }
    
    0 讨论(0)
  • 2020-11-28 15:57
    var defaults=NSUserDefaults()
    var highscore=defaults.integerForKey("highscore")
    
    if(Score>highscore)
    {
        defaults.setInteger(Score, forKey: "highscore")
    }
    var highscoreshow=defaults.integerForKey("highscore")
    
    lblHighScore.text="\(highscoreshow)
    println("hhScore reported: \(lblHighScore.text)")
    lblPlayScore.text="\(Score)"
    println("play reported: \(lblPlayScore.text)")
    
    0 讨论(0)
提交回复
热议问题