在TableView上设置从Firebase检索到的图像的Swift代码。
在TableView上设置从Firebase检索到的图像的Swift代码。
所以我整理我检索到的数据的方式是这样的;
结构体framePic
{
let imagedB : Data!
let pricedB : String!
}
我已经成功检索到了数据,但是我不知道如何在tableView上设置图像?我已经在标签上弄明白了...但是图片呢?
这是表格中单元格的代码;
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: RowCellTableView = myTableView.dequeueReusableCell(withIdentifier: "cell") as! RowCellTableView
// 设置标签
cell.priceView.text = framePics[indexPath.row].pricedB
// 在UIImageView上设置图像???
--- 我不知道如何添加这个?我需要以某种方式获取仅图像的列表???我相信如果我有像这样的数组变量; imageFiles[] 我可以做到; imageFiles[indexPath.row].getDataInBackground... 但在我的情况下,我使用结构体,那么在这种情况下我应该怎么做?
RowCellTableView只包含;
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var priceView: UILabel!
在这个问题中,出现的原因是在结构体中使用了一个imagedB属性,它的类型是Data。然而,在将这个Data类型转换为UIImage类型时出现了问题。解决方法是使用UIImage的初始化方法将imagedB转换为UIImage类型,然后将转换后的UIImage赋值给UIImageView的image属性。
具体的解决方法如下所示:
在结构体中,将imagedB属性的类型改为Data类型,并在tableView的cellForRow方法中进行如下更改:
1. 将framePics[indexPath.row].imagedB转换为UIImage类型,使用UIImage的初始化方法:
var imageUIImage: UIImage = UIImage(data: framePics[indexPath.row].imagedB)
2. 将转换后的UIImage赋值给cell的imageView的image属性:
cell.imageView.image = imageUIImage
实现以上更改后,问题将得到解决。
问题的原因是,从Firebase中获取的数据实际上是图像的URL,而不是图像本身。所以需要一个框架来处理这个URL并将其设置为TableView中的图像。
解决方法是使用一个iOS库,通过Cocoapods轻松集成到项目中。推荐使用SDWebImage库,它可以根据URL来设置ImageView中的图像。
另外,还可以通过创建一个UIImageView的扩展来在不使用外部库的情况下处理图像的下载和设置。以下是一个示例链接:stackoverflow.com/questions/41132122/…
通过使用相应的iOS库或通过创建UIImageView的扩展,可以从Firebase中检索到图像的URL,并将其设置为TableView中的图像。