我相对较新,尝试了一些代码,但遇到了问题。
在我的应用程序中,我有一个全局变量,可以跟踪用户是否已经选择了他的用户名。 一旦他选择了他的名字,我想永久地将这个变量设置为true,这样我就可以禁用通往Username ViewController的segue。
但我无法预设变量,因为每次重新打开应用程序时代码都会重新初始化变量。 我仍然遇到了使用UserDefaults进行设置的问题。
我希望我能够或多或少地解释我的问题。
答案 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进行检查,如果你忘记设置它,就会再制作一个可以搞砸的东西......