Читая комментарии, кажется, вы спрашиваете, как читать данные из Firebase.Поскольку в этом вопросе нет кода Firebase, мне приходится угадывать, чего вы в конечном итоге хотите достичь, поэтому сначала я направлю вас к Руководству Firebase Чтение и запись данных , которое охватывает эту тему.Затем см. Работа со списками
Чтобы обеспечить поддержку, вот одно из возможных решений.
Поскольку у вас есть tableView, который обычно будет поддерживаться источником данных tableView,Таким образом, концепция состоит в том, чтобы прочитать данные из Firebase и затем заполнить этот источник данных, а затем обновить tableView, который покажет объекты пользователю в пользовательском интерфейсе.
Давайте начнем с класса для хранения данных из Firebase RealtimeБаза данных
class ProgramClass {
var description = ""
var image = ""
var title = ""
init(withSnapshot: DataSnapshot) {
self.description = withSnapshot.childSnapshot(forPath: "description").value as? String ?? "No Description"
self.image = withSnapshot.childSnapshot(forPath: "image").value as? String ?? "No Image"
self.title = withSnapshot.childSnapshot(forPath: "title").value as? String ?? "No Title"
}
}
, а затем класс var для хранения этих объектов
var programsArrayDataSource = [ProgramClass]()
имейте в виду, что класс var будет выступать в качестве источника данных, который поддерживает ваше представление таблицы.Когда в firebase происходит изменение, источник данных обновляется через наблюдение Firebase (.childAdded, .childChanged или .childRemoved), а затем перезагружается tableView.
Чтобы фактически прочитать структуру Firebase, представленную в вашем вопросе, используйтеследующий кодЭто будет как чтение Firebase, так и заполнение источника данных для вашего tableView.
func fetchPrograms() {
let programsRef = self.ref.child("programs")
programsRef.observeSingleEvent(of: .value, with: { snapshot in
let allPrograms = snapshot.children.allObjects as! [DataSnapshot]
for programSnap in allPrograms {
let aProgram = ProgramClass(withSnapshot: programSnap)
self.programsArrayDataSource.append(aProgram)
}
self.programTableView.reloadData()
})
}
Оттуда вы можете обрабатывать код tableView;когда строка нуждается в обновлении, получите этот объект из источника данных через индекс (строку), прочитайте данные из этого объекта и заполните им ячейку tableView в любом нужном формате.