Сбой приложения при попытке получить URL изображения в виде строки
У меня есть эта функция, которая делает запрос на API:
Alamofire.request(URL).responseObject{ (response: DataResponse<Movie>) in
print("|MovieController| Response is: \(response)")
let movie = response.result.value
if let posterURL = movie?.posterURL {
print("Poster URL: \(posterURL)")
let imgStg: String = posterURL
print("-------> Image String: \(imgStg)")
}
}
Я действительно печатаю на своей консоли posterURL правильно, но приложение вылетает, когда я пытаюсь разрешить imgStg: String = posterURL.
Сначала я пытался сделать это:
let imgStg: String = movie!.posterURL!
let imgURL: URL? = URL(string: imgStg) //Error here: Cannot call value of non-function type 'String'
let imgSrc = ImageResource(downloadURL: imgURL!, cacheKey: imgStg)
Но xcode показывал эту ошибку. Поэтому я попытался увидеть, что я получаю в "imgStg", и сбой приложения при выполнении этой строки. Это почему? Как я могу получить это право?
PS: моя конечная цель - кэшировать изображение с помощью KingFisher:
posterImageView.kf.setImage(with: imgSrc)
Обновить
2 ответа
Ошибка, сообщающая, что вы звоните String
вместо метода. Как я вижу, вы передаете URL (не рекомендуется иметь то же имя), что и параметр в запросе, поэтому он запутывается и выдает ошибку. Попробуйте изменить имя с URL на requestURL или что-то еще.
Заменить это:
Alamofire.request(URL).responseObject { (response: DataResponse<Movie>)
с:
Alamofire.request(requestURL).responseObject { (response: DataResponse<Movie>)
и определенно, где вы объявили URL
изменить в этом месте тоже с requestURL
,
Ваше изображение фактически показывает точку останова (а не ошибку времени выполнения, как вы себе представляли).
Чтобы отключить его, просто нажмите на строку слева. Чтобы отключить все точки останова, используйте команду + Y.
Точки останова. Точка останова - это просто принудительная остановка на данной строке исходного кода. Как таковая, она вообще не связана с конкретной ошибкой во время сборки или во время выполнения.