gpt4 book ai didi

swift - 如何设置值为 firebase 的条形按钮?

转载 作者:行者123 更新时间:2023-11-28 13:55:07 24 4
gpt4 key购买 nike

我想检查用户是否是管理员。如果用户是管理员,我想显示一个栏按钮。如果不是,则应隐藏栏按钮。

我在 viewDidLoad 中调用以下代码:

@IBOutlet weak var beitraegeMelden: UIBarButtonItem!
var admin = false

func setupBarButton() {
observeAdmin()
if admin == true {
self.beitraegeMelden.isEnabled = true
self.navigationItem.rightBarButtonItem = self.beitraegeMelden
} else {
self.beitraegeMelden.isEnabled = false
self.navigationItem.rightBarButtonItem = nil
}
}

func observeAdmin() {
guard let currentUserUid = UserApi.shared.CURRENT_USER_ID else { return }
let REF_ADMIN = Database.database().reference().child("users").child(currentUserUid).child("admin")
REF_ADMIN.observeSingleEvent(of: .value) { (admin) in
let adminRecht = admin.value as? Bool
if adminRecht == true {
self.admin = true
} else {
self.admin = false
}
}
}

这里是我实际登录用户的数据库结构:

users
currentUid
admin: true

admin 值永远不会变为真。预先感谢您的帮助!

最佳答案

您需要完成,因为对 firebase 的调用是异步的

func observeAdmin(completion:@escaping((Bool) -> () )) {
guard let currentUserUid = UserApi.shared.CURRENT_USER_ID else { return }
let REF_ADMIN = Database.database().reference().child("users").child(currentUserUid).child("admin")
REF_ADMIN.observeSingleEvent(of: .value) { (admin) in
completion( (admin.value as? Bool) ?? false )
}
}

打电话

observeAdmin { (res) in 
self.beitraegeMelden.isEnabled = res
self.navigationItem.rightBarButtonItem = res ? self.beitraegeMelden : nil
}

关于swift - 如何设置值为 firebase 的条形按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53979516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com