从 0 开始时将 Int 保存到 UserDefaults

Saving Int to UserDefaults when starting at 0

我希望代码启动一个 var num = 0。然后在每次点击按钮后 num 增加 1。我 运行 遇到的问题是,当我切换视图控制器并返回到此一个它再次从 0 开始。第一次加载时num只能从0开始。我想使用 userdefults 来保存数字,所以无论分数总是会增加。

import UIKit

class ViewController: UIViewController {
    var num = 0
    let defaults = UserDefaults.standard

    @IBAction func press () {
        num += 1
        defaults.set(num, forKey: "num")
    }
}

您必须从 UserDefaults 初始化 num

将此添加到 viewDidLoad:

num = defaults.integer(forKey: "num")

或者只需将 var num = 0 行更新为:

var num = UserDefaults.standard.integer(forKey: "num")

在这种情况下,您不能使用 defaults 变量。

  1. 在用户默认设置数据后立即调用 synchronize(),以便保存它。
  2. 已将视图中的值设置回 num 将出现,因为视图将出现将在从其他屏幕弹出到此视图时被调用。

查看代码

import UIKit

class ViewController: UIViewController {

    var num = 0
    let defaults = UserDefaults.standard

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        num = defaults.integer(forKey: "num")
        print("Value of number from defaults \(num)")
    }

    @IBAction func press () {
        num += 1
        defaults.set(num, forKey: "num")
        defaults.synchronize()
    }
}