首页 > 解决方案 > 如何从网上下载一组 url 图片

问题描述

使用正则表达式,我提取了 html 字符串、所需的图像并将它们放入一个数组中。

现在的数组是什么样子的:

var collectionPhotoLinks = [
        "http:static-cdn3.vigbo.tech/u65463/78125/blog/5162255/4423863/57114004/500-codleto-889a051259ba894edee37b8da63ddbe9.jpg",
        "http:static-cdn3.vigbo.tech/u65463/78125/blog/5162255/4423863/57114004/500-codleto-9516ab3514e07bde176f117e70c7ba85.jpg"]

我可以上传一张图片

func downloadImages () {

    guard let url = URL(string:
        "http:static-cdn3.vigbo.tech/u65463/78125/blog/5162255/4423863/57114004/500-codleto-889a051259ba894edee37b8da63ddbe9.jpg")
            else { return }

    URLSession.shared.dataTask(with: url) { (data, response, error) in

        if let data = data, let image = UIImage(data: data) {
            DispatchQueue.main.async {

                self.imageView.image = image

            }
        }
    } .resume()
}

如果将“url”替换为数组“collectionPhotoLinks”,则 xcode 分别需要字符串而不是数组

那么问题来了,如何从数组中加载所有图像?将来我需要将它们发送到 tableview 或 collectionview,但我想先解决这个问题。

标签: swiftxcodeimagetableviewcollectionview

解决方案


通常是你在里面下载它cellForRowAtSDWebImage,但如果你需要预先下载所有然后你可以尝试

let arr = ["url1","urls"]

func downloadImages () {

    let g = DispatchGroup()

    for item in arr {

        guard let url = URL(string:item)
                else { return }

        g.enter()

        URLSession.shared.dataTask(with: url) { (data, response, error) in

            if let data = data, let image = UIImage(data: data) {

                //
            }

            g.leave()

        } .resume()
    }

    g.notify(queue: .main) {

        // done 
    }

}

推荐阅读