在Swift中保存一个整数变量

时间:2019-12-18 23:58:16

标签: swift nsuserdefaults

我正在尝试在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"))        
}

3 个答案:

答案 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