У меня есть таблица с набором ячеек, заполненных из Firebase Real-time (для текста) и Firebase Storage (для изображений).Код, который я собрал, ждет загрузки всего текста и изображений перед тем, как представить таблицу.
В идеале я хотел бы, чтобы текст сначала загружался в ячейки, а затем соответствующие изображения.
Код установки выглядит следующим образом:
- Главный контроллер вида
- Файл Tableviewcell, в котором хранятся метка и изображение.
- Файл модели.
Основная функция, которая вызывает у меня проблему, заключается в следующем:
func LoadDataFromImageTest() {
databaseReference = Database.database().reference()
let refPVV = Database.database().reference(withPath: "PVV").queryOrdered(byChild: "Status").queryEqual(toValue: "Active")
refPVV.observeSingleEvent(of: .value, with: { [weak self] (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self?.FBImageList.removeAll()
//iterating through all the values
for PVV in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let PVVObject = PVV.value as? [String: AnyObject]
let PVVImageName = PVVObject?["ImageName"] as! String?
let PVVName = PVVObject?["Name"] as! String?
let imageURL = Storage.storage().reference().child(PVVImageName!)
imageURL.downloadURL(completion: { (url, error) in
if error != nil {
print(error?.localizedDescription as Any)
return
}
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
if error != nil {
print(error as Any)
return
}
guard let imageData = UIImage(data: data!) else { return }
DispatchQueue.main.async {
let PVV = FBImageModel(ImageName: imageData as UIImage?, Name: PVVName as String?)
self!.FBImageList.insert(PVV, at: 0)
}
DispatchQueue.main.async {
//reloading the tableview
self?.FBImageTableView.reloadData()
}
}).resume()
})
}
}
}
)}
Как это следует изменить, чтобы загружать изображения по отдельности после заполнения текстовой метки для всехячейки?
Заранее спасибо за помощь.