我正在尝试在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"))
}
答案 0 :(得分:2)
在适当的位置,您应该使用smoke
中存储的值来初始化UserDefaults
属性。例如,您可能想在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)
}
如果您的0
中没有该键的任何值,默认情况下,注意integer(forKey:)
将返回UserDefaults
。如果要为密钥设置一个初始值,register(defaults:)
。
请注意,由于您的值应该是整数,因此您最好使用integer(forKey:)
而不是object(forKey:)
,这样就不必处理可选的/ Any
。
答案 1 :(得分:1)
雨燕4
设置值
this.api.getAdminList()
.subscribe(
data => {
if(data.length > 0) {
this.data= data.splice(0,1);
}
});
获取
this.api.getAdminList()
.subscribe(
data => {
if(data.length > 0) {
this.data = data.reverse().pop();
}
});
删除
UserDefaults.standard.set("Value", forKey: "Key") //setString
在您的UserDefaults.standard.string(forKey: "Key") //getString
UserDefaults.standard.removeObject(forKey: "Key")
然后
viewDidLoad
答案 2 :(得分:0)
您可以使用这一行代码从UserDefaults
获取数据。如果有数据,则将其返回,否则将返回0。
let smoke = UserDefaults.standard.object(forKey: "smoke") ?? 0