Как настроить кнопку бара со значением firebase? - PullRequest
0 голосов
/ 30 декабря 2018

Я хочу проверить, является ли пользователь администратором или нет.Если пользователь является администратором, я хочу показать кнопку панели.Если нет, кнопка бара должна быть скрыта.

Я вызываю следующий код в 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 

Значение администратора никогда не получитсяправда.Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 30 декабря 2018

Вам необходимо завершить, поскольку вызов 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...