У меня есть функция, которая загружает рис пользователя с URL, который использует это расширение UIImageView:
let imageCache = NSCache<AnyObject, AnyObject>()
extension UIImageView {
func loadImageUsingCacheWithUrlString(urlString: String) {
self.image = nil
print("here the URL of the image", urlString)
//check cache for image first
if let cachedImage = imageCache.object(forKey: urlString as AnyObject) {
self.image = cachedImage as? UIImage
return
}
// otherwise fire off a new download
let url = URL(string: urlString)
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
if let downloadedImage = UIImage(data: data!) {
imageCache.setObject(downloadedImage, forKey: urlString as AnyObject)
self.image = downloadedImage
}
}
}).resume()
}
}
Теперь у меня проблема в том, что иногда изображение профиля загружается, а иногда нет. Я полагаю, это происходит потому, что функция загружает изображение асинхронно, но почему после загрузки оно не появляется в профиле?
Я звоню с:
if hostPerfil != nil {
if let photo = hostPerfil?.picture {
hostPic.loadImageUsingCacheWithUrlString(urlString: photo)
}
hostName.text = hostPerfil!.firstName
}
Что я делаю не так? Кто-нибудь может мне помочь с этим, пожалуйста?