2016-10-20 2 views
1

보기 컨트롤러에는 여러 개의 관찰자 코드가 있습니다. 모두 하나만 제외하고는 올바르게 작동합니다. 나는 자식 경로가 맞을 것이라고 확신한다. 관측 기능이 정확합니다. 다른보기 컨트롤러에서 시도하고 올바르게 작동했습니다. 내 firebase 구조는 다음과 같습니다 : Firebase structure스위프트 - 파이어베이스 다중 관찰자

그리고 여기 내 옵저버 기능입니다.

func downloadUserData(){ 
    if let currentUser = FIRAuth.auth()?.currentUser{ 
     print("AZAT: download user data id \(currentUser.uid))") 
     DataService.ds.REF_USERS.child(currentUser.uid).observe( .value, with: {(snapshot) in 
     if let userDict = snapshot.value as? Dictionary<String,Any>{ 
      print("AZAT: userdict is \(userDict)") 
      let user = User(userData: userDict) 
      self.users.insert(user, at: 0) 
     } 
     }) 
    } 
} 

이 함수는 viewDidLoad()에 있습니다. REF_USERS이 맞습니다. 꽤 확신합니다.

도움 주셔서 감사합니다.

+0

좋아요, 괜찮은 것 같습니다. 무엇이 문제입니까? 오류? 어느 선 이요? – Dravidian

+0

콘솔에서 "print ("AZAT : 사용자 데이터 ID \ (currentUser.uid) 다운로드 ")를 볼 수 있습니다. 하지만 난 인쇄 ("AZAT : userdict \ (userDict)") 콘솔에서 볼 수 없습니다. 관찰은 작동하지 않습니다 @Dravidian – Azat

+0

그럼 아마도 대부분은 사전이 아닙니다. 자체적으로 스냅 샷을 인쇄 해 봅니다. – Dravidian

답변

0
func downloadUserData(){ 
    if let currentUser = FIRAuth.auth()?.currentUser{ 
    print("AZAT: download user data id \(currentUser.uid))") 
    DataService.ds.REF_USERS.child(currentUser.uid).observe( .value, with: {(snapshot) in 

    if let lastNameReceived = (snapshot.value as? NSDictionary)?["lastName"] as? String{ 
    print("lastName value is \(lastNameReceived)") 
    } 
    if let userDict = snapshot.value as? Dictionary<String,Any>{ 
     print("AZAT: userdict is \(userDict)") 
     let user = User(userData: userDict) 
      self.users.insert(user, at: 0) 
     } 
     }) 
    } 
}