我写了一个方法-checkUserStatus-快速地检查存储在firebase中的用户是“管理员”还是“创建者”。如果是,则可以看到“上传按钮”。在viewDidLoad中调用该函数,如下所示:
ORDER BY
方法如下:
ORDER BY FiscalYear
但是,当我逐步执行该方法时,我可以看到从未使用过观察器,而是直接跳转到“打印”行,该行指示restoredRole变量为空。因此,该按钮始终处于隐藏状态。我错过了不使用观察者的地方?不胜感激任何建议。
retrievedRole的变量在viewController的顶部声明如下:
override func viewDidLoad() {
super.viewDidLoad()
checkUserStatus()
}
答案 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)