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 方框架有利有弊。
我目前有可让我下载单个图像的工作代码。然后将该图像放在 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 方框架有利有弊。