我怎样才能看到UIImageView中的图像?

时间:2018-07-19 19:47:12

标签: ios arrays swift uiimageview

我有一个数组,其中包含解析的json数据,包括图像url。但是,当我尝试在uiimageview中查看该图像时,它没有显示。我该怎么办

我打印了网址。这是我在数组中的网址。

enter image description here

这是我的数组

var feedResult = [Result]()

它在collectionview中显示名称,但我看不到图像。我像每个人一样使用命名。但是缺少了什么?

let info = feedResult[indexPath.row]
cell.appLabel.text = info.artistName
cell.customCollectionImage.image = UIImage(named: info.artWorkUrl)

2 个答案:

答案 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)