Присвойте значение переменной из закрытия - iOS Swift - PullRequest
1 голос
/ 30 июня 2019

Я пытаюсь назначить Image (который загружается из API) из замыкания в переменную.Закрытие, которое реализует выполнение, является экранирующим закрытием.

Поскольку это выходит за рамки закрытия, я получаю сообщение «Отсутствует возврат в функции, которая, как ожидается, вернет UIImage?» *

Добрый совет, как это исправить

 var posterPath: UIImage? {
    get {
        let url = posterData.medium[0].url
        self.imageFor(for: url) { (image) in
            return image
        }
    }
  //returns error here as there is no return statement
}

1 Ответ

0 голосов
/ 01 июля 2019

Я думаю, что вы можете достичь этого, используя в своей функции экранирующий параметр, что-то вроде этого:

func getTheImageFromApi(success: @escaping (_ image: UIImage) -> ()){

    let url = posterData.medium[0].url
        self.imageFor(for: url) { (image) in
            success(image)
     }

}

Затем, используя эту функцию в вашем контроллере вида:

var posterPath: UIImage?

override func viewDidLoad() {
    super.viewDidLoad()

    getTheImageFromApi(success: { image in
        self.posterPath = image
    })
}
...