在 Swift 中保存整数变量

Saving an integer variable in Swift

我试图在 swift/xcode 中保存一个整数变量,这样当用户打开应用程序时,他们递增的数字保持不变(已保存)。到目前为止,这段代码没有运气。当我重新启动应用程序时,这个数字总是回到零。下面的按钮只是将 smoke 变量加 1,我想保存该数据。

感谢您的宝贵时间。

let defaults = UserDefaults.standard
var smoke = 0

@IBAction func incrementSmoke(_ sender: UIButton) {
    smoke+=1

    defaults.set(smoke, forKey: "smoke")

    numDaysLabel.text = String(defaults.integer(forKey: "smoke"))        
}

Swift 4

设置值

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

获取

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

移除

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

在你的viewDidLoad

smoke = UserDefaults.standard.string(forKey: "smoke") ?? 0

然后

numDaysLabel.text = "\(smoke)" 

您可以使用这一行代码从 UserDefaults 获取数据。如果有数据则返回,或者 returns 0.

let smoke = UserDefaults.standard.object(forKey: "smoke") ?? 0

在适当的位置,您应该使用 UserDefaults 中存储的值初始化 smoke 属性。例如,您可能想在 viewDidLoad 中执行此操作,或者您可以直接在声明 属性.

的初始化程序中执行此操作
var smoke = UserDefaults.standard.integer(forKey: "smoke")

@IBAction func incrementSmoke(_ sender: UIButton) {
    smoke += 1    
    UserDefaults.standard.set(smoke, forKey: "smoke")    
    numDaysLabel.text = String(smoke)
}

integer(forKey:) will return 0 by default if there is no value stored in your UserDefaults already for that key. If you want to set an initial value for the key, register(defaults:)

注意,因为你的值应该是一个整数,你最好使用 integer(forKey:) 而不是 object(forKey:) 这样你就不必处理可选的 / Any.