swift - UserDefaults 不会在应用程序关闭并重新打开后保存数据

标签 swift userdefaults

我目前遇到的一个问题是,如果我离开应用程序并返回,recordData 值不会保持保存状态。如果我在不关闭应用程序的情况下再次玩游戏,它仍会保存。

如果我关闭并重新打开应用程序,ant new score 将替换 recordData,因此,将 highScoreLabel1.text 更新为新的分数。即使新的 score 值小于先前保存的 recordData 值,也会发生这种情况。请注意,当应用重新打开时,highScoreLabel1.text 会显示正确的高分。它只是在任何新的 score 产生后才保留它。所以,基本上它似乎 UserDefaults 只在应用程序打开时工作,并且在应用程序关闭并重新打开后不会持续存在。我可能需要 AppDelegate 中的一些东西。有什么建议吗?

这是我的 highScoreUserDefaults 代码:

var recordData = 0

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    highScoreLabel1A.text = String(UserDefaults.standard.integer(forKey: "Record1A"))
}

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

最佳答案

只需在 viewWillAppear 中添加一行,将 recordData 设置为之前保存的高分 ...

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // high score code
    highScoreLabel1A.text = String(UserDefaults.standard.integer(forKey: "Record1A"))

    // This code will set recordData to the previously saved High Score value, thus avoiding "0"
    recordData = UserDefaults.standard.integer(forKey: "Record1A")

} 

关于swift - UserDefaults 不会在应用程序关闭并重新打开后保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847499/

相关文章:

swift - 从另一个选项卡返回后 View Controller 变黑

ios - 从 NSUserDefaults 检索自定义对象

swift - 删除 MKAnnotation 后如何更新 UserDefaults?

ios - 使用 UserDefaults 设置全局变量

ios - SKSpriteNode 的递增旋转导致 iphone 5 上的编译器错误

ios - 禁用 UIScrollView 手势

ios - 更新到 Xcode 10.2 后出现 PDFKit 问题。有什么办法解决吗?

swift - Swift 2 中缓存图像的粘性滚动

ios - 协议(protocol)类型 'Any' 的值不能符合 'Equatable' Swift

swift - Cocoa Swift 中的自定义类 Unarchive 为零