【问题标题】:Swift - Downloading Multiple Images Asynchronously [duplicate]Swift - 异步下载多个图像[重复]
【发布时间】:2018-07-02 06:33:41
【问题描述】:

我目前有可让我下载单个图像的工作代码。然后,它将该图像放入 collectionview 单元格内的 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 上使用扩展。并且很少有好的 3rd 方库可以让它变得更容易
  • 看看LazyTableImages如何使用一个简单的异步下载管理器。

标签: ios swift asynchronous urlsession


【解决方案1】:

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

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

import SDWebImage

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 2012-12-31
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多