gpt4 book ai didi

ios - 高分标签未更新 - UserDefaults 和 Swift 4

转载 作者:行者123 更新时间:2023-11-30 10:52:15 24 4
gpt4 key购买 nike

我从中获取此代码的资源是用 Swift 3 编写的并且可以正常工作。我的应用程序是用 Swift 4 编写的。我认为我可能缺少 Swift 4 特有的东西,但我不知道它可能是什么。

我有合适的 channel 和变量......

@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var highScoreLabel1: UILabel!

var recordData: String!

viewDidLoadviewDidAppear 占...

override func viewDidLoad() {
super.viewDidLoad()

let userDefaults = Foundation.UserDefaults.standard
let value = userDefaults.string(forKey: "Record")
recordData = value

}

override func viewWillAppear(_ animated: Bool) {
let userDefaults = Foundation.UserDefaults.standard
let value = userDefaults.string(forKey: "Record")

if (value == nil) {
highScoreLabel1.text = "0"

} else {

highScoreLabel1.text = value
}
}

我创建了一个我认为可以工作的函数...

func high score () {

if gameMode == 0 {

if recordData == nil {

let savedString = scoreLabel.text
let userDefaults = Foundation.UserDefaults.standard
userDefaults.set(savedString, forKey: "Record")

} else {

let score: Int? = Int(scoreLabel.text!)
let record: Int? = Int(recordData)

if score! > record! {

let savedString = scoreLabel.text
let userDefaults = Foundation.UserDefaults.standard
userDefaults.set(savedString, forKey: "Record")

}
}
}
}

最佳答案

高分标签不会更新,因为没有代码。标签仅在 viewDidLoad/viewWillAppear 中设置(一次)。

我强烈建议将高分保存为Int。这避免了 optional ,并且可以显着减少代码。

  • 声明recordData

    var recordData = 0
  • 删除viewDidLoad中的代码。在 viewWillAppear 中加载一次数据就足够了。

  • viewWillAppear 替换为

    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // integer(forKey returns 0 if the key is not used yet
    highScoreLabel1.text = String(UserDefaults.standard.integer(forKey: "Record"))
    }
  • 将最高分替换为

    func highscore() {
    guard gameMode == 0, let score = Int(scoreLabel.text!), score > recordData else { return }
    recordData = score
    UserDefaults.standard.set(recordData, forKey: "Record")
    highScoreLabel1.text = String(recordData)
    }

关于ios - 高分标签未更新 - UserDefaults 和 Swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332944/

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