快速应用中未调用Firebase中的观察者

时间:2019-11-17 23:29:29

标签: ios swift firebase firebase-realtime-database

我写了一个方法-checkUserStatus-快速地检查存储在firebase中的用户是“管理员”还是“创建者”。如果是,则可以看到“上传按钮”。在viewDidLoad中调用该函数,如下所示:

ORDER BY

方法如下:

ORDER BY FiscalYear

但是,当我逐步执行该方法时,我可以看到从未使用过观察器,而是直接跳转到“打印”行,该行指示restoredRole变量为空。因此,该按钮始终处于隐藏状态。我错过了不使用观察者的地方?不胜感激任何建议。

retrievedRole的变量在viewController的顶部声明如下:

override func viewDidLoad() {
    super.viewDidLoad()
checkUserStatus()
}

1 个答案:

答案 0 :(得分:1)

您需要将check块嵌入回调中,因为它的调用是异步的

userRef.observe(.value, with: { (snapshot) in
    let dictionary = snapshot.value as! [String: Any]
    let role = dictionary["role"] as! String
    self.retrievedRole = role

    print("retrieved role is \(retrievedRole)")
    //only those users who are admin or creators can see upload button
    if retrievedRole == "admin" || retrievedRole == "creator" {
       uploadButton.isHidden = false
    } else {
       uploadButton.isHidden = true
    }
}, withCancel: nil)