2016-10-15 11 views
2

私はコードを実行しても何も起こらないが、ユーザーのユーザー名を取得して変数に保存しようとしている。これは私のFirebaseレイアウトです: enter image description hereデータを取得してUIBarButtonで使用できない - Firebase Swift 3

そして、ここでは私のviewDidAppear()

let uid = FIRAuth.auth()?.currentUser?.uid 
let ref:FIRDatabaseReference! 
ref = FIRDatabase.database().reference().root.child("users").child("\(uid)") 
ref.observeSingleEvent(of: .value, with: { snapshot in 
    print("test") 
    if !snapshot.exists() { return } 

    let user = (snapshot.value as? NSDictionary)?["name"] as? String ?? "" 
    print(user) 
    let username = UIBarButtonItem(title: user, style: UIBarButtonItemStyle.plain, target: self, action: nil) 
    let picture = UIBarButtonItem() 
    self.navigationController!.navigationItem.rightBarButtonItem = username 
}) 
+0

を、どのような起こる? 'observeSingleEvent'コールバックに入りますか? –

+0

コードは実行されますが、ユーザー名を印刷しようとすると何も出ません(print(user))。EDIT:コードは実行されますが、コードは何もしません。 –

答えて

3

である私のコードは、使用してみてくださいです: - あなたは、デバッガでコードをステップ実行した場合

FIRDatabase.database().reference().root.child("users").child("\(FIRAuth.auth()!.currentUser!.uid)")observeSingleEvent(of: .value, with: { snapshot in 
    print("test") 
    if let snapDict = snapshot.value as? [String:AnyObject]{ 
      let user = snapDict["name"] as! String 
      print(user) 
      let username = UIBarButtonItem(title: user, style: UIBarButtonItemStyle.plain, target: self, action: nil) 
      let picture = UIBarButtonItem() 
      self.navigationItem.rightBarButtonItem = username 
     } else { 
      print("No such user exists!.") 
     } 
}) 
+0

ユーザー名を正しく取得していますが、ナビゲーションコントローラに表示されていません。たぶん私はそれを間違って設定しているのだろうか? –

+0

回答更新... – Dravidian

+0

ありがとうございました! –

関連する問題