У меня есть чат, и я хочу показать фотографии профиля пользователя.Все будет отображаться правильно, но не профильные изображения пользователей.Каждый раз, когда я перезагружаю свой взгляд, я получаю другие фотографии.
Я загружаю изображение профиля со следующими строками:
func showProfilImage(uid: String, completion: @escaping (UIImage) -> Void) {
UserApi.shared.observeUser(uid: uid) { (user) in
guard let url = URL(string: user.profilImageUrl!) else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard error == nil, let data = data, let image = UIImage(data: data) else { return }
DispatchQueue.main.async {
let finishedImage = image.withRenderingMode(.alwaysOriginal)
completion(finishedImage)
}
}.resume()
}
}
Затем я звоню showProfilImage
в cellForRowAt
со следующими строками:
self.showProfilImage(uid: self.items[indexPath.row].user.uid!) { (image) in
cell.profilePic.image = image
}
ОБНОВЛЕНИЕ
Теперь я реализовал sdWebImage и завершил работу с URL:
func showProfilImage(uid: String, completion: @escaping (URL) -> Void) {
UserApi.shared.observeUser(uid: uid) { (user) in
guard let url = URL(string: user.profilImageUrl!) else { return }
completion(url)
}
}
Здесь я называю мой showProfilImage
:
self.showProfilImage(uid: self.items[indexPath.row].user.uid!) { (url) in
cell.profilePic.image = nil
cell.profilePic.sd_setImage(with: url, completed: { (_, _, _, _) in
})
}