我是个新手,尝试过一些代码,但遇到了一个问题。
在我的应用程序中,我有一个全局变量,它可以跟踪用户是否已经选择了他的用户名。一旦他选择了他的名字,我希望将这个变量永久设置为true,这样我就可以禁用指向用户名ViewController的段。
但我不能预先设置变量,因为每次我重新打开应用程序时,代码都会重新初始化变量。我仍然在用UserDefaults设置它时遇到了问题。
我希望我能或多或少地解释我的问题。
发布于 2018-06-01 04:51:54
如果没有设置,UserDefaults getters将返回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
}
确保在他们进入set username屏幕后,您在UserDefaults中设置了Username键:
UserDefaults.standard.string(value, forKey:"username")
其中value
是他们输入的值。
如果要重置UserDefaults中的值(即用户注销),请使用removeObject函数:
UserDefaults.standard.removeObject(forKey:"username")
这将使UserDefaults.standard.string(forKey:"username")
再次返回nil
。
添加一个用于检查的bool只会使多一个齿轮,如果您忘记设置它,可能会使一切都搞砸。
发布于 2018-06-01 04:44:08
将布尔值设置为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
}
https://stackoverflow.com/questions/50632413
复制相似问题