首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用UserDefaults设置全局变量

使用UserDefaults设置全局变量
EN

Stack Overflow用户
提问于 2018-06-01 04:37:00
回答 2查看 1.3K关注 0票数 0

我是个新手,尝试过一些代码,但遇到了一个问题。

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

但我不能预先设置变量,因为每次我重新打开应用程序时,代码都会重新初始化变量。我仍然在用UserDefaults设置它时遇到了问题。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-01 04:51:54

如果没有设置,UserDefaults getters将返回nil,所以您不需要设置bool,只需检查是否已像这样设置了该值:

代码语言:javascript
复制
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键:

代码语言:javascript
复制
UserDefaults.standard.string(value, forKey:"username")

其中value是他们输入的值。

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

代码语言:javascript
复制
UserDefaults.standard.removeObject(forKey:"username")

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

添加一个用于检查的bool只会使多一个齿轮,如果您忘记设置它,可能会使一切都搞砸。

票数 0
EN

Stack Overflow用户

发布于 2018-06-01 04:44:08

将布尔值设置为userDefault

代码语言:javascript
复制
UserDefaults.standard.setBool(true, forKey: "is_userName") 

并检索要检查的值

代码语言:javascript
复制
if UserDefaults.standard.bool(forKey: "is_userName") {
      // User have created username 
} else {
      // Go to set username screen
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50632413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档