Swift - 异步下载多个图像

Swift - Downloading Multiple Images Asynchronously

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

但是,我想从 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 将我的问题标记为重复。我已经看到 post 并且它只加载一个图像。我的问题是关于下载多张图片的正确方法 smh。

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

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

import SDWebImage

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

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

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

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