使用 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 只会增加一个齿轮,如果您忘记设置它,它可能会把它搞砸...
我对此比较陌生,尝试了一些代码,但遇到了问题。
在我的应用程序中,我有一个全局变量,用于跟踪用户是否已经选择了他的用户名。 一旦他选择了他的名字,我想将这个变量永久设置为 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 只会增加一个齿轮,如果您忘记设置它,它可能会把它搞砸...