【问题标题】:Setting global variables with UserDefaults使用 UserDefaults 设置全局变量
【发布时间】:2018-05-31 20:37:00
【问题描述】:

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

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

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

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

【问题讨论】:

  • 没有任何代码很难提供帮助,能否请您显示您使用的代码以及在哪里获取/设置 UserDefaults?

标签: ios swift nsuserdefaults userdefaults


【解决方案1】:

将布尔值设置为 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
}

【讨论】:

  • 现在有意义了!谢谢!
【解决方案2】:

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 进行检查只会增加一个 cog,如果您忘记设置它会搞砸它...

【讨论】:

  • 太棒了!谢谢你,正是我搜索的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多