Swift Firebase запрос вложенных дочерних узлов - PullRequest
0 голосов
/ 02 января 2019

У меня есть следующие настройки в firebase: enter image description here

Затем я запрашиваю пожарную базу:

func getUserInfo(){

var tempUsers = [user]()
           // query for the data 
        let itemRef = Database.database().reference(fromURL: "[url]").child("users")
        itemRef.observe(.value, with: { snapshot in

            for child in snapshot.children {

        if let childSnapshot = child as? DataSnapshot,
            let dict = childSnapshot.value as? [String: Any], 
            let sport = dict["Sport"] as? String, 
            let username = dict["username"] as? String{

                let user = user(sport: sport, username: username)

                tempUsers.append(user)
            }
         }
             self.usersArray = tempUsers                           

        }){ (error) in
            print("the error is: \(error.localizedDescription)")
        }
  }

Пользователи:

    class user {

            var username: String 
            var sport: String
            var teamInfo: [teamInfo]


      init(username: String, sport: String, teamInfo: [teamInfo])
  {
    self.username = username
    self.sport = sport
    self.teamInfo = [teamInfo]

  }
}

struct teamInfo {
  var AwayTeam: String
  var HomeTeam = String
  var Jersey = Int

}

Я хотел бы знать, как я смогу получить информацию о команде в своем запросе, а затем добавить ее к экземпляру пользователя, я пытался превратить «команду» в диктовку, но это не дает мне желаемый результат.

1 Ответ

0 голосов
/ 02 января 2019

Перво-наперво: у вас несоответствие в username. Ваш JSON означает Username с заглавной буквы U, а код использует username с заглавной буквы u. Поскольку Firebase чувствителен к регистру, ваш код сейчас никогда не получит правильное значение.

Кроме того, вы можете получить значения от вложенных потомков, используя DataSnapshot.childSnapshot(forPath:).

itemRef.observe(.value, with: { snapshot in
    for child in snapshot.children {

    if let childSnapshot = child as? DataSnapshot,
        let dict = childSnapshot.value as? [String: Any], 
        let team = childSnapshot.childSnapshot(forPath: "Team/AwayTeam").value as? String;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...