【发布时间】:2020-04-15 21:51:28
【问题描述】:
我有一个名为 (events) 的 tableview,我从 firebase 中提取图像并加载它们,这个想法是发布事件并在事件帖子中添加传单图像。它工作得很好,但是当我关闭应用程序并重新打开图像时,图像的顺序不正确,并且一些图像出现在错误的事件中。任何帮助将不胜感激我对编码很陌生。
eventsDatabaseHandle = eventsRef?.child("Church Events").observe(.childAdded, with: { (snaphot) in
let eventPost = snaphot.value as! [String: Any]
var event = Event(title: eventPost["eventtitle"] as! String,
timestamp: eventPost["eventdate"] as! String,
location: eventPost["eventlocation"] as! String,
image: nil)
let task = URLSession.shared.dataTask(with: URL(string: eventPost["ImageUrl"] as! String)!) { data, _, error in
if let image: UIImage = UIImage(data: data!) {
event.image = image
DispatchQueue.main.async {
self.events.append(event)
self.tableView.reloadData()
}
}
}
task.resume()
})
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return events.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "events", for: indexPath) as! EventsTableViewCell
let event = events[indexPath.row]
cell.flyerImages.image = event.image
cell.eventTitle.text = event.title
cell.eventDate.text = event.timestamp
cell.eventLocation.text = event.location
【问题讨论】:
-
你可能想尝试this方法
-
嗨@AliZahr,谢谢你的回复,你能告诉我我的代码会是什么样子吗?
-
在初始化事件后,不要下载图像,只需附加到数组并重新加载表。在 cellForRowAtIndexPath 中使用答案中解释的库下载图像
-
嗨@Ali 我试图让你推荐工作,但我无法弄清楚或者它不起作用。就像我说的那样,我对 swift 真的很陌生。
标签: swift asynchronous firebase-realtime-database