【问题标题】:How to check whether current user exists or not?如何检查当前用户是否存在?
【发布时间】:2020-03-21 19:56:21
【问题描述】:

我使用以下代码检查用户是否存在然后从数据库中检索数据,否则什么也不做,但是当应用程序加载并且用户不存在时(我是用户)它执行数据库查询给出了

的错误

在展开可选值时意外发现 nil:文件

在这一行

self.checksetup = document.get("setupComplete") as!布尔

这不应该发生,因为用户不存在,我在 Swift IOS 中使用它并使用 Firestore 数据库和 firebase 身份验证

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        let user1: User = Auth.auth().currentUser!
        if let user: User = Auth.auth().currentUser! {
            let setupcheckref = Firestore.firestore().collection("users").document(Auth.auth().currentUser!.uid)
            setupcheckref.getDocument{(document, error) in
                if let document = document, document.exists{
                    let dataDescription = document.data().map(String.init(describing:)) ?? "nil"

                    self.checksetup = document.get("setupComplete") as! Bool

                    if self.checksetup == true {
                        if Auth.auth().currentUser!.isEmailVerified {
                                           self.performSegue(withIdentifier: "toHomeScreen", sender: self)
                                           SVProgressHUD.dismiss()
                                       }
                                       else{
                                           print("please verify your email")
                                           try! Auth.auth().signOut()

                                           let alertController = UIAlertController(title: "Email Verification", message:
                                               "Please verify your email to Login! Check Your Inbox!", preferredStyle: .alert)
                                           alertController.addAction(UIAlertAction(title: "Dismiss", style: .default))

                                           self.present(alertController, animated: true, completion: nil)
                                          // self.view.makeToast("please verify your email")
                                           self.sendEmailVerification()
                                           SVProgressHUD.dismiss()
                                       }

                    }

                    else{

                        self.view.makeToast("Please Setup Your Account!", duration: 2.5)


                        self.performSegue(withIdentifier: "tocompletesetup", sender: self)
                        SVProgressHUD.dismiss()
                    } }

            }

           // self.performSegue(withIdentifier: "toHomeScreen", sender: self)
        }



    }

【问题讨论】:

    标签: ios swift firebase google-cloud-firestore firebase-authentication


    【解决方案1】:
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        guard let user: User = Auth.auth().currentUser else {
            view.makeToast("Please Setup Your Account!", duration: 2.5)
            performSegue(withIdentifier: "tocompletesetup", sender: self)
            SVProgressHUD.dismiss()
            return
        }
        let setupcheckref = Firestore.firestore().collection("users").document(user.uid)
        setupcheckref.getDocument { document, _ in
            if let document = document, document.exists {
                let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
                if self.checksetup = document.get("setupComplete") as? Bool, self.checksetup {
                    if user.isEmailVerified {
                        self.performSegue(withIdentifier: "toHomeScreen", sender: self)
                        SVProgressHUD.dismiss()
                    } else {
                        print("please verify your email")
                        do {
                            try? Auth.auth().signOut()
                            let alertController = UIAlertController(title: "Email Verification", message:
                                "Please verify your email to Login! Check Your Inbox!", preferredStyle: .alert)
                            alertController.addAction(UIAlertAction(title: "Dismiss", style: .default))
    
                            self.present(alertController, animated: true, completion: nil)
                            // self.view.makeToast("please verify your email")
                            self.sendEmailVerification()
                            SVProgressHUD.dismiss()
                        } catch {}
                    }
                } else {
                    print("check failed",self.checksetup)
                }
            } else {
                print("Document doesnt exists")
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      相关资源
      最近更新 更多