使用 UserDefaults 设置全局变量

Setting global variables with UserDefaults

我对此比较陌生,尝试了一些代码,但遇到了问题。

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

的 segue

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

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

将 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 screen
}

UserDefaults getters 将 return 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") 再次 return nil

添加一个用于检查的 bool 只会增加一个齿轮,如果您忘记设置它,它可能会把它搞砸...