【发布时间】: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