Swift - 异步下载多个图像

时间:2018-01-23 12:26:21

标签: ios swift asynchronous urlsession

我目前有工作代码可以下载单个图片。然后,它将该图像放在collectionview单元格内的imageview中。

但是,我想从2个不同的网址下载2张图片。我是否需要创建另一个URLSession任务,或者我可以只使用相同的会话下载2个图像吗?

let url = URL(string: "www.example.com/image.jpg")
let task = URLSession.shared.dataTask(with: url!) { data, response, error in 
guard let data = data, error == nil else { return }

DispatchQueue.main.async() {
    cell.postImage.image = UIImage(data: data) 
    }
}

编辑:不确定为什么Leo将我的问题标记为重复。我已经看过那个帖子,它只加载一个图像。我的问题是关于正确下载多个图像的方法。

2 个答案:

答案 0 :(得分:1)

我建议您为此目的使用第三方库。我建议的是SDWebImage库:SDWebImage

库的使用非常简单。这是一个例子:

import SDWebImage

imageView.sd_setImage(with: URL(string: "http://www.test.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))

它处理异步下载本身,所以你不必再担心这些东西了。此外,它还集成了一个聪明的缓存系统,这意味着如果图像下载一次,它将不会再次下载相同的图像。

答案 1 :(得分:0)

您希望每张图片都有一个单独的数据任务。请注意,是否必须创建单独的数据任务(您这样做)与是否需要创建单独的URLSession对象不同。 (对于使用共享会话对象的简单任务很好。)

您也可以像其他人建议的那样使用第三方库。使用第三方框架既有利也有弊。