使用UserDefaults设置全局变量

时间:2018-05-31 20:37:00

标签: ios swift nsuserdefaults userdefaults

我相对较新,尝试了一些代码,但遇到了问题。

在我的应用程序中,我有一个全局变量,可以跟踪用户是否已经选择了他的用户名。 一旦他选择了他的名字,我想永久地将这个变量设置为true,这样我就可以禁用通往Username ViewController的segue。

但我无法预设变量,因为每次重新打开应用程序时代码都会重新初始化变量。 我仍然遇到了使用UserDefaults进行设置的问题。

我希望我能够或多或少地解释我的问题。

2 个答案:

答案 0 :(得分:1)

将bool值设置为userDefault

UserDefaults.standard.setBool(true, forKey: "is_userName") 

撤回检查值

if UserDefaults.standard.bool(forKey: "is_userName"){
      // User have created username 
  }else {
      // Go to set username screem
  }

答案 1 :(得分:0)

如果未设置,则UserDefaults getter将返回nil,因此您不需要设置bool,只需检查该值是否已设置为:

if let username = UserDefaults.standard.string(forKey:"username") {
    // user has created username, and username has the unwrapped value in it
} else {
    // go to set username screen
}

确保在进入设置用户名屏幕后,在UserDefaults中设置用户名密钥:

UserDefaults.standard.string(value, forKey:"username")

value是他们输入的值。

如果要重置UserDefaults中的值(即他们注销),请使用removeObject函数:

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

这将使UserDefaults.standard.string(forKey:"username")再次返回nil

添加一个bool进行检查,如果你忘记设置它,就会再制作一个可以搞砸的东西......