У меня возникла проблема или, точнее, недоразумение о том, как связать табличное представление со значением в Firebase.
Моя информация:
У меня есть Firebase, одна из многих других папок называется «Полеты». В представлении моего приложения я могу добавить некоторую информацию в эту папку по следующему пути: Авиабилеты> userId> autoId> мои интересующие значения, включая дату и некоторые другие String
Мой вопрос:
как я могу добавить в tableView, когда это создается viewDidLoad, одна новая персонализированная ячейка для каждого autoId в моей папке Авиабилеты> userId?
мои попытки:
Я объявляю свой массив:
var datas: [Flight] = []
Я вызываю viewDidLoad () эту функцию:
func loadFlights() {
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("flights").child(userID!).childByAutoId().queryOrderedByKey().observe(.childAdded, with: { (snapshot) in
if let valueDictionary = snapshot.value as? [AnyHashable:String]
{
let date = valueDictionary["Date"]
let type = valueDictionary["aircraft-model"]
let registration = valueDictionary["aircraft-registration"]
let totalTime = valueDictionary["TOTAL-TIME"]
let depTime = valueDictionary["departure-time"]
let depPlace = valueDictionary["departure-place"]
let arrTime = valueDictionary["arrival-time"]
let arrPlace = valueDictionary["arrival-place"]
self.datas.append(Flight(from: date ?? "XX-XX-XX", type!, registration!, totalTime!, depTime!, depPlace ?? "NIL", arrTime!, arrPlace!))
self.tableView.reloadData()
}else{
// nothing need to happens
}
})
}
наконец, у меня есть часть менеджера таблицы:
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return datas.count
//return newFlight.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// creer la cellule
let cell = tableView.dequeueReusableCell(withIdentifier: "lbCells") as! LogBookCell
cell.dateLabel.text = datas[indexPath.row].date
cell.typeLabel.text = datas[indexPath.row].type
cell.RegistrationLabel.text = datas[indexPath.row].regi
cell.totalTimeLabel.text = datas[indexPath.row].totalTime
cell.depTimeLabel.text = datas[indexPath.row].depTime
cell.depPlaceLabel.text = datas[indexPath.row].depPlace
cell.arrTimeLabel.text = datas[indexPath.row].arrTime
cell.arrPlaceLabel.text = datas[indexPath.row].arrPlace
return cell
}
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete{
datas.remove(at: indexPath.row)
tableView.reloadData()
}
}
И я не понимаю, почему при загрузке страницы tableView в моем приложении ничего не появляется ...
спасибо за вашу помощь!
Флаер-74