Как получить переменную из базы данных Firebase в Swift - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь просто прочитать в базу данных, которая структурирована, как указано ниже. Я пытаюсь прочитать пользовательский "userType" и использовать его в следующих утверждениях if ниже. Любая помощь приветствуется!

Код Swift:

// Create firebase reference and link to database
var dataRef : DatabaseReference?
dataRef = Database.database().reference()
let userID = Auth.auth().currentUser!.uid // Get the User's ID

// Gather user's type (Customer or Company)
/*Use this space to gather the user's type into some variable named currUserType*/


if (currUserType == "Customer"){
    self.performSegue(withIdentifier: "LoginToCustomer", sender: self)
    print("User: " + userID + " has been signed in!")
}
else if (currUserType == "Company"){
    self.performSegue(withIdentifier: "LoginToHost", sender: self)
}
else{
    self.showMessage(alertTitle: "Error",
                                 alertMessage: "Please report the following error with a description of what lead to to the error.",
                                 actionTitle: "Dismiss")
}

Структура базы данных:

"Users" : {
"ZFH0lFe1fIb5bwSO2Q95ektD33L2" : {
  "email" : "cust@test.com",
  "userType" : "Customer"
}

1 Ответ

0 голосов
/ 03 ноября 2018
  1. Сначала возьмите реф, как я взял ниже:

let dbRef = Database.database (). Reference (). Child ("Users")

  1. Затем создайте модель, как я создал ниже:

класс Пользователи { var email: String? var userType: String?

init(email: String, userType: String) {
    self.email = email
    self.userType = userType
}

}

  1. Затем создайте обработчик завершения, как я создал ниже:
func getUsersData(handler: @escaping (_ usersArray: [Users]) -> ()) {
var usersArray = [Users]()

dbRef.observe(.value) { (datasnapshot) in

    guard let usersnapshot = datasnapshot.children.allObjects as? [DataSnapshot] else { return }

    for user in usersnapshot {
        let email = user.childSnapshot(forPath: "email").value as! String
        let userType = user.childSnapshot(forPath: "userType").value as! String

        let userObj = Users(email: email, userType: userType)
        usersArray.append(userObj)
    }
    handler(usersArray)
}

}

  1. просто вызовите эту функцию, которая возвращает весь массив пользователей.

Refrence https://firebase.google.com/docs/database/ios/read-and-write#reading_and_writing_data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...