2016-11-02 7 views
0

Firebaseでログインページを設定していて、uidが認識されないエラーが発生しました。ここに私のコードです:私はガードの文を取り除くただし場合、「user?」と入力します。メンバーがいない(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

ありがとうエミール!あるいは、ユーザーの代わりにFIRUserを使用するようにガード・ステートメントを単に切り替えることはできますか?それがうまくいくのですが、初心者としては、あなたの代わりにそのようにすることで、何か他のものをぶつけているのかどうかわかりません。再度、感謝します! – d0xi45

+0

@ d0xi45私の更新された答えに示されているように、 'user'はすでに' FIRUser'型です。答えの代わりに '(user、error)'と書くと、変数の型を指定しないだけです。 'var x:Int = 5'や' var x = 5'のようなものです。どちらもInt型ですが、そのコーディングスタイルは同じです。作成が完了すると、 'FIRUser.currentUser'も更新されます。違いは、 'user'はローカル変数で、' FIRUser.currentUser'はグローバルなので、あなたのアプリ内のどこでもアクセス可能です。 あなたの問題を解決するのに役立ちましたら、受け入れて、upvoteの回答を忘れないでください:) – eshirima

関連する問題