2017-06-24 82 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