gpt4 book ai didi

ios - 使用 NSUserDefaults 在 Swift 中保存和加载高分

转载 作者:行者123 更新时间:2023-11-30 13:41:40 24 4
gpt4 key购买 nike

我在尝试比较我的分数和最高分以查看哪一个更大然后保存它时遇到了一些问题。我认为问题出在highscore和score的对比和保存上。非常感谢您的帮助!

//Comparison between score and highscore
if score > highscore {
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
highscore = defaults.valueForKey("highscore")?.integerValue ?? 0
defaults.setInteger(score, forKey: "highscore")
defaults.synchronize()
highscoreString = String(highscore)
highscoreLabel.text = highscoreString }

整页代码 - https://github.com/SRL311/Highscore/blob/master/Highscore(抱歉,大写和小写令人困惑)

最佳答案

您还可以创建一个带有 getter 和 setter 的新 NSUserDefault 属性,以自动检查您尝试保存的分数是否高于实际高分:

更新:Xcode 8.2.1 • Swift 3.0.2

extension UserDefaults {
static let highScoreIntegerKey = "highScoreInteger"
static let highScoreDoubleKey = "highScoreDouble"
var highScore: Int {
get {
print("High Score:", integer(forKey: UserDefaults.highScoreIntegerKey))
return integer(forKey: UserDefaults.highScoreIntegerKey)
}
set {
guard newValue > highScore
else {
print("\(newValue) ≤ \(highScore) Try again")
return
}
set(newValue, forKey: UserDefaults.highScoreIntegerKey)
print("New High Score:", highScore)
}
}
func resetHighScore() {
removeObject(forKey: UserDefaults.highScoreIntegerKey)
print("removed object for highScoreIntegerKey")
}
var highScoreDouble: Double {
get {
return double(forKey: UserDefaults.highScoreDoubleKey)
}
set {
guard newValue > highScoreDouble
else {
print("\(newValue) ≤ \(highScoreDouble) Try again")
print("Try again")
return
}
set(newValue, forKey: UserDefaults.highScoreDoubleKey)
print("New High Score:", highScoreDouble)
}
}
func resetHighScoreDouble() {
removeObject(forKey: UserDefaults.highScoreDoubleKey)
print("removed object for highScoreDoubleKey")
}
}
<小时/>

在项目中进行测试(自 Swift 2 起不再在 Playground 中工作):

UserDefaults().resetHighScore()
UserDefaults().highScore // High Score = 0
UserDefaults().highScore = 100 // New High Score = 100
UserDefaults().highScore = 50 // 50 < 100 Try again
UserDefaults().highScore // 100
UserDefaults().highScore = 150 // New High Score = 150
UserDefaults().highScore // 150

Xcode 7.2 • Swift 2.1.1

extension NSUserDefaults {
var highScore: Int {
get {
print("High Score = " + integerForKey("highScore").description)
return integerForKey("highScore")
}
set {
guard newValue > highScore else { print("\(newValue) ≤ \(highScore) Try again")
return
}
setInteger(newValue, forKey: "highScore")
print("New High Score = \(highScore)")
}
}
func resetHighScore() {
removeObjectForKey("highScore")
print("removed object for key highScore")
}
var highScoreDouble: Double {
get {
return doubleForKey("highScoreDouble")
}
set {
guard newValue > highScoreDouble else { print("Try again")
return
}
setDouble(newValue, forKey: "highScoreDouble")
print("New High Score = \(highScoreDouble)")
}
}
func resetHighScoreDouble() {
removeObjectForKey("highScoreDouble")
print("removed object for key highScoreDouble")
}
}

关于ios - 使用 NSUserDefaults 在 Swift 中保存和加载高分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35494963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com