Как я узнаю в Swift 5, действительно ли изображение было загружено с URL-адреса? - PullRequest
1 голос
/ 19 июня 2020

Я использую элемент управления страницей с представлением прокрутки и хочу добавить загруженные изображения в представление прокрутки, пока предоставленная ссылка не перестанет загружать изображение. Прямо сейчас ссылка загружает изображение, пока индекс не станет больше 7, но l oop все еще продолжается. По-видимому, он не возвращает ошибку, когда URL-адрес все еще может быть загружен, хотя изображения для загрузки нет. Это то, что я получаю, когда вставляю URL-адрес вручную в браузере с индексом больше 7.

enter image description here

Это код, который я использовал. Я хотел бы знать, есть ли способ проверить, было ли загружено изображение на самом деле.

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 Ответ

2 голосов
/ 19 июня 2020

Вы можете просто проверить это, прежде чем устанавливать изображение в свой код:

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")
  }
}

Сохранить кодирование ...........:)

...