iOS Swift: ошибка загрузки изображения SDWebImage - PullRequest
0 голосов
/ 28 апреля 2018

Я использую SDWebImage для загрузки изображений в горизонтальном виде с разбивкой по страницам. Некоторые изображения не загружены и выдают ошибку «отменено».

Вот как я объявляю ячейку:

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PHOTOS_CELL_ID, for: indexPath) as! PhotosCell

Вот как я загружаю изображения в представление изображения ячейки:

            cell.photoImgV.sd_setImage(with: URL(string:photo[Constants.PHOTO_URL] as! String), placeholderImage: nil, options: SDWebImageOptions(rawValue: 0), completed: { (img, err, cacheType, imgURL) in
            if err != nil{
                print("ERROR LOADING IMAGE: \(err?.localizedDescription ?? "ERRRRoR")")
            }
                // prints: ERROR LOADING IMAGE: cancelled

Я надеюсь, что есть решение для этого.

1 Ответ

0 голосов
/ 28 апреля 2018

Вы должны знать, как SDWebImage реализует их sd_setImage методы. В начале методов вызывается sd_cancelImageLoadOperationWithKey для отмены текущего запроса и запуска запроса с новым URL.

enter image description here

В вашей ситуации, я думаю, ошибка регистрируется, потому что ячейки используются повторно.

Когда ячейка отображается на экране, она запускает запрос на выборку изображения с помощью sd_setImage. Прежде чем выполнить этот запрос, вы прокручиваете и выводите эту ячейку за пределы экрана. В этот момент вы продолжаете прокручивать и ячейка используется повторно. sd_setImage вызывается снова в этой ячейке с другим URL, пока текущий запрос не завершен. И, как я сказал выше, sd_setImage отменяет текущий запрос перед началом нового запроса.

cancelled ошибка регистрируется, потому что sd_cancelImageLoadOperationWithKey вызывается в начале метода sd_setImage.

Вас не должно волновать ошибка cancelled в этой ситуации. Ваш код работает правильно.

...