Изображение Kingfisher iOS не загружается

Я пытаюсь динамически установить UIImageView с помощью Kingfisher. Контекст состоит в том, что на предыдущем экране есть TableView с различными выбираемыми строками, а затем, когда строка выбрана, UIView показывает детали, которые содержат больше информации, включая изображение. Я просмотрел документацию Kingfisher и обнаружил, что объявление принадлежит viewDidLoad, поскольку оно у меня есть, но я все еще не могу загрузить изображение. Я также проверил с помощью отладки, что URL-адрес, передаваемый в Kingfisher, является ссылкой на изображение. Я думаю, что это может быть связано с тем, что изображение устанавливается в фоновом потоке, но я не уверен, как это исправить, если это так. Я попытался переместить реализацию Kingfisher в функции viewWillAppear и viewDidAppear, но они по-прежнему не отображают изображение даже после длительного времени ожидания.

Вот мой код, в котором удалены некоторые несвязанные функции.

import UIKit
import Kingfisher

class DetailsViewController: UIViewController {

@IBOutlet weak var thumbnail: UIImageView!

var thumbnailURL: URL?

override func viewDidLoad() {
    super.viewDidLoad()

    self.thumbnail.kf.setImage(with: thumbnailURL)

  ...................................................


//        self.thumbnail.image = UIImage(named: "image1")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
}

person Alien8tr96    schedule 08.03.2018    source источник
comment
Вы можете привести пример URL-адреса изображения?   -  person kd02    schedule 08.03.2018
comment
http: // books.google.com/books/content?id=OY48PgAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api Вот пример URL изображения. Я пытаюсь разработать приложение, использующее GoogleBooksApi   -  person Alien8tr96    schedule 08.03.2018
comment
нет http или https?   -  person kd02    schedule 08.03.2018
comment
Это http. Созданная гиперссылка удалила это. Я просто добавил место, чтобы не создавать гиперссылку, моя плохая   -  person Alien8tr96    schedule 08.03.2018


Ответы (2)


kd02 - Я нашел ответ на свой вопрос. Когда вы спросили, был ли это http или https, я вспомнил, что вам нужно включить http в xcode 9 сейчас из-за повышения безопасности. Я сделал это, и теперь это работает.

person Alien8tr96    schedule 08.03.2018
comment
Ах да, тогда это имеет смысл. Удачного кодирования :) - person kd02; 08.03.2018
comment
Тем не менее, спасибо за ваш отзыв. Мне нужно добавить проверку на нулевой URL-адрес, поэтому мне это тоже нужно - person Alien8tr96; 08.03.2018

Попробуйте что-то вроде этого

import UIKit
import Kingfisher

class DetailsViewController: UIViewController {

    @IBOutlet weak var thumbnail: UIImageView!

    var thumbnailURL: URL?

    override func viewDidLoad() {
        super.viewDidLoad()

        if let url = self.thumbnailURL {

            self.thumbnail.setImage(with: url)
        }
    }
}

Я чувствую, что проблему вызывает необязательный URL.

person kd02    schedule 08.03.2018