【问题标题】:How to setup a Bar Button with a value of firebase?如何设置一个值为firebase的条形按钮?
【发布时间】:2018-12-30 16:45:59
【问题描述】:

我想检查用户是否是管理员。如果用户是管理员,我想显示一个条形按钮。如果没有,应该隐藏栏按钮。

我在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 值永远不会为真。 提前感谢您的帮助!

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    你需要一个完成,因为对 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
    }
    

    【讨论】:

    • 非常适合我,谢谢!最后一个问题:我在我的数据库中设置了管理员,所以除了我之外没有成员有管理员孩子。如果所有其他用户都没有子管理员,如何处理?这一次,当我使用没有 admin child 的用户登录时,我总是会遇到致命错误。提前感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2022-07-14
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多