Базовое чтение из Firebase и загрузка таблицы с результатами (Swift) - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь просто прочитать мои данные о базе данных и заполнить табличное представление информацией.По какой-то причине мне кажется, что появляется только первый элемент.Мои данные Firebase выглядят так:

{
"Filter by Color" : {
   "New Black" : {
      "Astrophyllite" : {
         "color" : "Black",
         "name" : "Astrophyllite",
         "properties" : "Astral Travel, Physic Protection"
      },
      "Onyx" : {
         "Properties" : "The Heals",
         "color" : "Black",
         "name" : "Onyx"
      }
   }
 }
}

Мои разрешения Firebase установлены на чтение: true, запись: false (я хочу публичные разрешения на чтение, но база данных не изменяется из приложения.

MyКод Swift:

override func viewDidLoad() {
    ref.child("Filter by Color").child("New Black").observe(DataEventType.value, with: { (snapshot) in
        var crystalList: [CrystalDefinitionClass] = []
        for child in snapshot.children {
            if let snapshot = child as? DataSnapshot,
                let crystals = CrystalDefinitionClass(snapshot: snapshot) {
                self.crystalArray.append(crystals)


            }
        }

        //            self.crystalArray = crystalList
        self.tableView.reloadData()
    })

}

Ниже приведена информация для моего представления таблицы:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // #warning Incomplete implementation, return the number of rows // return self.Crystal.count print(crystalArray.count) return crystalArray.count }

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    let crystalDB = crystalArray[indexPath.row]

    cell.textLabel?.text = crystalDB.name

    return cell
}

Это приводит к единственному результату из базы данных.Любая помощь здесь будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 июня 2018

Firebase имеет регистрозависимые ключи, поэтому в этом случае в узле «Новый черный» первый дочерний узел имеет «свойства»

  "Astrophyllite" : {
     "color" : "Black",
     "name" : "Astrophyllite",
     "properties" : "Astral Travel, Physic Protection"
  },

, а второй дочерний узел имеет «Свойства»

  "Onyx" : {
     "Properties" : "The Heals",
     "color" : "Black",
     "name" : "Onyx"
  }

Firebase будет рассматривать эти два разных ключа.В общем, очень важно, чтобы ключи дочерних узлов оставались согласованными на всех дочерних узлах, чтобы их можно было правильно прочитать и запросить.

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