web-dev-qa-db-ja.com

Swift-NSUserDefaultsを使用してハイスコアを保存

私はSwiftを使用してゲームを作っています。NSUserDefaultsを使用してユーザーのハイスコアを保存したいのです。AppDelegateファイルに新しいNSUserDefaults変数を作成する方法を知っています:

let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults()

しかし、どのように私はこれを私のビューコントローラで設定/取得しますか?

13
user2397282

最初は、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
}
36
beeef

In Swift 3.

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
}
12
Ashok R
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
jigar parmar

Swift 4

値の設定

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

取得

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

削除

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

0
Mithra Singam