2016-10-15 13 views
2

코드를 실행할 때마다 아무 일도 일어나지 않지만 사용자의 사용자 이름을 다시 검색하여 변수에 저장하려고합니다. 이것은 내 중포 기지 레이아웃입니다 : 여기 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

코드가 실행되지만 사용자 이름을 인쇄하려고하면 아무 것도 나오지 않습니다 (인쇄 (사용자)). 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

답변 됨 updated ... – Dravidian

+0

대단히 고마워요! –

관련 문제