2016-08-10 8 views
1

完了ハンドラからuidを取得しようとしているため、パスを作成してFirebase DBからいくつかのアイテムを取得できるようになっていますが、は時間が。完了ハンドラが想定どおりに呼び出されない

私の問題は、dbRefが既に呼び出された後、私の完了ハンドラが呼び出されて、それ以外の方法で呼び出されないことです。 私は私のコードは、行1にFIRAuth.auth()が実行されると考え?...、2 dbRef = FIRDatabase ....

override func viewDidLoad() { 
    super.viewDidLoad() 

    FIRAuth.auth()?.addAuthStateDidChangeListener({ (auth:FIRAuth,  user:FIRUser?) in 
     if let userSignedIn = user { 

      self.myuserLogged = userSignedIn.uid 
      print("Welcome buddy \(self.myuserLogged)") 

     } 
    }) 
print("brother \(self.myuserLogged)") 

    dbRef = FIRDatabase.database().reference().child("Users/\(myuserLogged)") 
    startObservingDB() 
} 

答えて

1

完了ハンドラがあるため、非同期に処理されます操作には時間がかかることがあります。後でdbRefが必要な場合は、これを補完ハンドラに入れる必要があります。

+0

したがって、基本的にはこのように動作します。addAuthStateDidChangeListenerはデータベースから情報を取得してauthとuser変数を取り込みますが、コード実行はdbRefに続き、addAuthStateDidChangeListenerがタスクを終了すると、 'in'の後でコードを実行し続けます。 。私はそれを得たと思う。 – bibscy

+0

@bogdanbarbulescu右の音です。 – dersvenhesse

関連する問題