提问者:小点点

在Swift5中,我如何知道图像是否是从URL下载的?


我正在使用带有滚动视图的页面控件,希望将下载的图像添加到滚动视图中,直到提供的链接不再下载图像为止。 现在,链接下载一个映像,直到索引不大于7,但循环仍在继续。 显然它不会返回一个错误,当url仍然可以加载,尽管没有图像下载。 这就是我在索引大于7的浏览器中手动粘贴url时得到的结果。

这是我用的代码。 我想知道如果有一个方法来测试如果实际的一个图像被下载。

var test = 15

func setupScreens() {
        for index in 1..<test {
                // 1.
            frame.origin.x = scrollView.frame.size.width * CGFloat(index - 1)
            frame.size = scrollView.frame.size

                // 2.
            let imageView = UIImageView(frame: frame)


            let urlSession = URLSession(configuration: .default)
            let url = URL(string: "https://jarisstoriesphotographyphoto.files.wordpress.com/2020/06/menu\(index).png")!

            // Create Data Task

            let dataTask = urlSession.dataTask(with: url) { [weak self] (data, _, error) in
                if let error = error {
                    print(error)
                    self?.test = 0 // should end the loop
                }
                if let data = data {
                    DispatchQueue.main.async {
                        // Create Image and Update Image View
                        imageView.image = UIImage(data: data)
                        self?.scrollView.addSubview(imageView)
                    }
                }
            }
            // Start Data Task
            dataTask.resume()

        }

共1个答案

匿名用户

在代码中设置映像之前,您可以简单地进行如下检查:

DispatchQueue.main.async {
  if let image = UIImage(data: data) { //Image is available in the url
     imageView.image = image
     self?.scrollView.addSubview(imageView) 
  }else {
     print("Image not available in this url")
  }
}

继续编码。。。。。。。。。。。。。。 :)