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

时间:2017-06-24 16:46:27

标签: swift firebase uid

我是Swift的新手,遇到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

请告知,如何妥善打开它?或者别的什么?

1 个答案:

答案 0 :(得分:1)

您正在展开两个潜在的零值,而不先检查它们是否为零

  1. FIRAuth.auth()?.currentUser!
  2. currentUser属性返回“当前登录用户(或null)。”

    1. (FIRAuth.auth()?.currentUser!.uid)!
    2. 要检查第一次或第二次展开是否导致 致命错误:在展开“可选值 时意外发现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
      }