2016-11-02 14 views
0

Firebase로 로그인 페이지를 설정하고 있는데 uid이 인식되지 않는 오류가 발생했습니다. 여기에 내 코드입니다 : 내가 가드 문을 제거하지만 경우,유형 "사용자?" UID가 없습니다 (Swift 3, Firebase)

FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (FIRUser,error) in 

     if error != nil { 
      print(error) 
      return 

     } 

     guard let uid = user?.uid else { 
      return 
     } 

나는 또한 FIRUser에 명령을 클릭 할 수없는, 인증은 완벽하게 잘 작동합니다.

Firebase와 FirebaseDatabase를 가져 왔습니다 (FirebaseAuth를 가져올 수 없습니다. 건너 뛰었습니다).

FIRUser에 액세스 할 수없고 uid을 사용할 수없는 이유는 무엇입니까?

답변

0

클로저 내부에 user 변수를 만들어야합니다. 대신이 함수를 다시 작성하십시오.

FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user: FIRUser?, error: Error?) in 

    if error != nil { 
     print(error) 
     return 

    } 

    guard let uid = user?.uid else { 
     return 
    } 
+0

감사합니다. Emil! 아니면 단순히 사용자 대신 FIRUser를 사용하도록 guard 문을 전환 할 수 있습니까? 그게 효과가 있지만, 초보자로서 나는 당신 대신에 그렇게하는 방식으로 다른 일을 저지르고 있는지 잘 모르겠습니다. 다시 한 번 감사드립니다! – d0xi45

+0

@ d0xi45'user'는 이미 업데이트 된 답변에 표시된 것처럼'FIRUser' 유형입니다. 내 대답 대신'(user, error)'로 쓰면 변수의 유형을 지정하지 않기 만하면됩니다. 그것은'var x : Int = 5' 또는'var x = 5'를하는 것과 같습니다. 그들은 둘 다'Int' 타입이지만 코딩 스타일은 될 것입니다. 생성이 완료되면, 'FIRUser.currentUser'도 업데이트됩니다. 차이점은'user'는 지역 변수이고'FIRUser.currentUser'는 전역 변수이며 따라서 앱 내 어디에서나 액세스 할 수 있습니다. 문제를 해결하는 데 도움이되면 답변을 수락하고 upvote하는 것을 잊지 마십시오. :) – eshirima

관련 문제