2017-06-24 25 views
0

我是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 

       } 

致命错误:意外发现零而展开的可选值

请指教,如何正确地解开呢?或者也许别的东西?

+0

'(!FIRAuth.auth()?currentUser .uid)'不会是零,如果你要么创建NEWUSER或签署的现有用户。 – Lamar

回答

1

你没有检查,看看他们是否是零

  1. FIRAuth.auth()?.currentUser!

currentUser属性返回展开2个潜在的零值“当前登录用户(或空)。”

  • (FIRAuth.auth()?.currentUser!.uid)!
  • 要检查第一或第二解包是造成致命错误:意外地发现零而展开的可选值,调整你如果声明如下所示:

    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 
    } 
    
    +0

    谢谢,这对我有帮助。 – Rurom