2017-10-19 7 views
0

私は素早く新しいです。私は複数のビューを使用してサインアップフォームを作成しようとしています。問題は、Auth.auth()を呼び出した後です。currentUser?.uid 各ビューで別のStringが取得され、特定のUIDで作業を続行できません。私は間違って何をしていますか?Firebaseはすべてのビューでuidを変更しています

私はそうとfirebase関数のcreateUserを使用してユーザーを作成しています:

Auth.auth().createUser(withEmail: emailField.text!, password: 
passField.text!, completion: { (user, error) in 
      if let error = error { 
       print(error) 
      } 
      if let user = user { 
       let userInfo: [String : Any] = ["uid": UserModel().getUID(), 
               "username": self.usernameField.text!, "avatar_icon" : ""] 
       self.ref.child("users").child(user.uid).setValue(userInfo) 
      } 
     }) 

私はその特定の文字列を保持しているモデルクラスを作成しようとしたが、同じ悪い結果を得るました。

import Foundation 
import Firebase 

class UserModel { 
    var userID : String 

    init() { 
     self.userID = (Auth.auth().currentUser?.uid)! 
    } 

    func getUID() -> String { 
     return self.userID 
    } 

} 

私の最初のサインアップビューコントローラは、UserModel()。GETUID()将来のビューコントローラででUIDを取得し、私はUserModel.initを呼び出しRegister1ViewController、()です。

+1

Welcome to StackOverflow!質問を更新して、登録ビューのコードを追加してください。問題を再現するために必要な最小限の完全なコードを含めてください。詳細は、[this](https://stackoverflow.com/help/mcve)リンクを参照してください。 –

答えて

0

あなたが知っているように、すべての認証されたユーザーは、一意の「固有の」uIDしか持っていません。だから、あなたがユーザーとしてログインしたときに、あなたはいつも同じuIDを取得する必要があります。このコードのほんの一部を提供したので、ここからは言い難いです。あなたは答えを得るためにもっと提供するべきです。

EDIT: アクティビティが開始されるたびにcreateuserを呼び出すようです。つまり、コードを実行するたびに別のユーザーを作成しています。そして

Auth.auth()。CurrentUserには?

戻ります別のUIDを.UID。あなたは一度登録して、他の時間にログインする必要があります。以下のチュートリアルをチェックすることができます。しかし、ちょうどスニペットを見ないで、githubコードを開いてください。

https://www.appcoda.com/firebase-login-signup/

+0

私のコード全体はこの問題とは無関係です。共通のすべてのビューを呼び出すだけです:Auth.auth()。currentUser?.uidは別の文字列を返します。私は私の投稿を編集し、私が使用したようにcreateUser関数を追加しました。提案ありがとう :) –

関連する問題