我有一个数组,其中包含解析的json数据,包括图像url。但是,当我尝试在uiimageview中查看该图像时,它没有显示。我该怎么办
我打印了网址。这是我在数组中的网址。
这是我的数组
var feedResult = [Result]()
它在collectionview中显示名称,但我看不到图像。我像每个人一样使用命名。但是缺少了什么?
let info = feedResult[indexPath.row]
cell.appLabel.text = info.artistName
cell.customCollectionImage.image = UIImage(named: info.artWorkUrl)
答案 0 :(得分:0)
通过使用UIImage(named: info.artWorkUrl)
,您将不会访问数组中的图像,而是访问Assets.xcassets(您在项目中手动添加的资产)中的图像。
您需要从artWorkUrl下载图像,然后像这样直接使用下载的图像:
cell.customCollectionImage.image = UIImage(data: yourImageData)
您的imageData是您使用artWorkUrl从服务器下载的内容。
答案 1 :(得分:0)
您必须使用获得的URL下载图像Data
,然后才能使用下载的数据,如下所示:
imageView.image = UIImage(data: downloadedData)
这里是UIImageView
的一个快速子类,可以进行下载:
class URLImageView: UIImageView {
func download(url urlString: String) {
guard let url = URL(string: urlString) else { return }
let task = URLSession.shared.dataTask(with: url) { (downloadedData, _, error) in
guard error == nil && downloadedData != nil else { return }
DispatchQueue.main.async{
self.image = UIImage(data: downloadedData!)
}
}
task.resume()
}
}
Update-1 ,使用带有download
扩展名的UIImageView
函数,无需子类化,就像这样:
extension UIImageView {
func download(url urlString: String) {
guard let url = URL(string: urlString) else { return }
let task = URLSession.shared.dataTask(with: url) { (downloadedData, _, error) in
guard error == nil && downloadedData != nil else { return }
DispatchQueue.main.async{
self.image = UIImage(data: downloadedData!)
}
}
task.resume()
}
}
用法:
cell.customCollectionImage.download(url: info.artWorkUrl)