(Swift)如何正确展开可选值?验证后返回nil的Firebase uid

(Swift)如何正确展开可选值?验证后返回nil的Firebase uid,swift,firebase,uid,Swift,Firebase,Uid,我是斯威夫特的新手,Firebase UID有问题 usersReference.child("users").observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in print(snapshot) if snapshot.hasChild((FIRAuth.auth()?.currentUser!.uid)!) {

我是斯威夫特的新手,Firebase UID有问题

  usersReference.child("users").observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
            print(snapshot)
            if snapshot.hasChild((FIRAuth.auth()?.currentUser!.uid)!)
            {
                print("This user already exist")
            //code

                }
致命错误:在展开可选值时意外发现nil


请告知,如何正确地打开它?或者其他什么?

您正在展开两个可能为零的值,而没有首先检查它们是否为零

  • FIRAuth.auth()?.currentUser
  • 属性返回“当前登录的用户(或null)”

  • (FIRAuth.auth()?.currentUser!.uid)
  • 要检查第一次或第二次展开是否导致了致命错误:在展开可选值时意外发现nil,请按如下方式重新构造if语句:

    if FIRAuth.auth()?.currentUser == nil {
        print("no user logged in")
    } else if FIRAuth.auth()?.currentUser!.uid == null {
        print("no user id value")
    } else if snapshot.hasChild((FIRAuth.auth()?.currentUser!.uid)!) {
        print("This user already exist")
    } else {
        // code to handle new user
    }
    

    (FIRAuth.auth()?.currentUser!.uid)将不会为零。谢谢,这对我很有帮助。