Swift - сохранение рекорда с использованием NSUserDefaults

Я использую Swift для создания игры. Я хочу, чтобы сохранить высокий балл пользователей, используя NSUserDefaults. Я знаю, как создать новую переменную NSUserDefaults в моем файле AppDelegate:

let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults()

Но как мне установить/получить это в контроллерах моего представления?

Ответ 1

Сначала NSUserDefaults - это словарь (NSDictionary, я думаю). Каждое приложение имеет свои собственные настройки по умолчанию, поэтому вы не можете получить доступ к настройкам по умолчанию из любого другого приложения.

Если пользователь (тот, кто играет в вашу игру) делает новый рекорд, вам нужно сохранить этот рекорд:

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

Затем, когда вы хотите получить лучший рекордер, сделанный пользователем, вам нужно "прочитать" рекордер из словаря следующим образом:

if let highscore = userDefaults.valueForKey("highscore") {
    // do something here when a highscore exists
}
else {
    // no highscore exists
}

Ответ 2

В Swift 3.0

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

Сохранение:

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

при получении:

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
}

Ответ 3

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)")

Ответ 4

Вы можете использовать ниже фрагмент кода:

// 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")

}