Swift - 异步下载多张图片

3
我目前已经有可以下载单张图片的工作代码。它会将这张图片放入集合视图单元格中的ImageView中。
然而,我想从2个不同的URL下载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将我的问题标记为重复。我已经看到了那篇文章,它只加载单个图像。我的问题是关于正确下载多个图像的方法。


我的建议是在你的ImageView上使用一个扩展。而且有一些好的第三方库可以让它更容易。 - Kamal Upasena
请查看LazyTableImages,了解如何使用简单的异步下载管理器。 - vadian
2个回答

2
我建议您使用第三方库来完成此任务。我可以推荐使用SDWebImage库:SDWebImage 该库的使用非常简单。以下是一个示例:
import SDWebImage

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

它自己处理异步下载,所以您不需要再担心这些问题。此外,它还集成了一个聪明的缓存系统,这意味着如果图像被下载一次,它将不会再次下载相同的图像。

0

您想要每个图像都有一个单独的数据任务。请注意,您是否必须创建单独的数据任务(是的)与是否需要创建单独的URLSession对象是不同的。(对于使用共享会话对象的简单任务,这是可以的。)

您还可以使用第三方库,就像其他人建议的那样。使用第三方框架既有优点也有缺点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接