【问题标题】:Retrieving Image From Firebase从 Firebase 检索图像
【发布时间】:2017-06-07 13:22:53
【问题描述】:
应用程序运行成功,但图像未显示在表格单元格中。
let dbRef = FIRDatabase.database().reference().child("restaurants/restaurantImage")
dbRef.observe(.childAdded, with: {(snapshot) in
let downloadURL = snapshot.value as! String
let storageRef = FIRStorage.storage().reference(forURL: downloadURL)
storageRef.data(withMaxSize: 10 * 1024 * 1024) { (data, error) -> Void in
let pic = UIImage(data: data!)
self.picArray.append(pic!)
}
self.tableViewHongKong.reloadData()
})
【问题讨论】:
标签:
ios
swift
firebase
firebase-realtime-database
firebase-storage
【解决方案1】:
您应该在完成处理程序中移动self.tableViewHongKong.reloadData()。使用您当前的代码,您可以在异步函数完成之前重新加载表。
除非您 100% 确定数据会真正返回并且 UIImage 初始化程序会成功,否则不应强制展开。
let dbRef = FIRDatabase.database().reference().child("restaurants/restaurantImage")
dbRef.observe(.childAdded, with: {(snapshot) in
let downloadURL = snapshot.value as! String
let storageRef = FIRStorage.storage().reference(forURL: downloadURL)
storageRef.data(withMaxSize: 10 * 1024 * 1024) { (data, error) -> Void in
guard let imageData = data, let pic = UIImage(data: imageData) else { return }
self.picArray.append(pic)
self.tableViewHongKong.reloadData()
}
})
【解决方案2】:
图像没有出现,因为您在将任何图片附加到数组之前重新加载表格视图。 data(withMaxSize: 启动一个异步请求,在您重新加载表视图后获得响应。
如果您将self.tableViewHongKong.reloadData() 移动到data(withMaxSize: 响应块内,您将在附加每个成功加载的图像后重新加载表格视图。