在控制器中设置的用户默认值无法在控制器中读取

Posted

技术标签:

【中文标题】在控制器中设置的用户默认值无法在控制器中读取【英文标题】:Userdefaults set in controllerA cannot to read in ControllerB 【发布时间】:2019-10-14 09:49:58 【问题描述】:

我在signInController 中设置用户信息。如果缺少任何必填字段或需要更新数据,则 signupController 需要填充相同的信息,但从 signupcontroller 中检索时用户默认为 nil。

SignInController:设置用户默认值

  private var user: UserDefaults?self.user?.set((result as? [AnyHashable : Any])?["name"], forKey: "username")
  self.user?.set((result as? [AnyHashable : Any])?["id"], forKey: "userid")
  self.user?.set((result as? [AnyHashable : Any])?["email"], forKey: "useremail")
  self.user?.set((((result as? [AnyHashable : Any])?["picture"] as? [AnyHashable : Any])?["data"] as? [AnyHashable : Any])?["url"], forKey: "userpic")
  self.user?.synchronize()

在注册控制器中

 private var user: UserDefaults?

 func populateData ()
    

        print("UserDefaults.standard.dictionaryRepresentation().values)=======>",user?.dictionaryRepresentation().keys)
        print("Facebook handler===", user?.object(forKey: "name"))

        textName.text = (user?.object(forKey: "name")  ?? "") as! String
        textEmail.text = (user?.object(forKey: "mail") ?? "") as! String
        userPhone.text = (user?.object(forKey: "phone") ?? "")  as! String

        print("The data is Name : ",textName.text)
        print("The data is Email : ",textEmail.text)
        print("The data is Phone : ",userPhone.text)


    

这是 print 语句的输出。

UserDefaults.standard.dictionaryRepresentation().values)=======> nil
Facebook handler=== nil
The data is Name :  Optional("")
The data is Email :  Optional("")
The data is Phone :  Optional("")

【问题讨论】:

使用 Firebase 身份验证firebase.google.com/docs/auth 【参考方案1】:

正如 Kamal 所说,我们可以使用 firebase.google.com/docs/auth 在 swift 应用中创建 OTP。

【讨论】:

以上是关于在控制器中设置的用户默认值无法在控制器中读取的主要内容,如果未能解决你的问题,请参考以下文章

你在哪里初始化视图控制器中的属性值?

Laravel 8 - firstOrCreate() 不返回数据库中设置的默认值

如何使用nixos中设置的属性的默认值,并对其进行扩展

Vue警告无法读取null的属性

使用Angularjs在选择下拉菜单中设置默认值

UIDatePicker:无法选择默认值