【问题标题】:Swift-Firebase multiple observersSwift-Firebase 多个观察者
【发布时间】:2017-03-03 00:44:34
【问题描述】:

在视图控制器中,我有多个观察者代码。除了一个之外,所有这些都正常工作。我确定子路径是正确的。观察函数是否正确。我尝试了不同的视图控制器,它工作正常。这是我的火力基地结构:

这是我的观察者功能。

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 是正确的,我很确定。

感谢您的帮助。

【问题讨论】:

  • 好吧,看起来还不错,有什么问题?错误?哪条线?
  • 我可以在控制台中看到 print("AZAT: download user data id (currentUser.uid))")。但我在控制台中看不到 print("AZAT: userdict is (userDict)")。观察不起作用@Dravidian
  • 那么很可能不是字典,尝试打印快照本身
  • 我试过了,我什至没有进入观察功能。我之前试过 if let userDict 语句,没用。
  • 什么是DataService.ds.REF_USERS

标签: ios swift firebase firebase-realtime-database observers


【解决方案1】:
 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)
         }
        })
    }
}

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2018-06-11
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多