Как обновить изображение MKPointAnnotation после загрузки правильного изображения?
У меня есть куча аннотаций на карте, на которых все есть собственные фотографии. Некоторые фотографии могут быть еще не загружены в приложение из Firebase, поэтому, если они не имеют доступного изображения, по умолчанию используется изображение белого круга и начинается загрузка. Когда загрузка завершается, он не устанавливает новый образ. Как я могу пойти по этому поводу?
Вот какой-то код:
func generateAnnotations() {
for photo in photos {
let annotation = DetailPhotoPointAnnotation()
let latitude = photo.latitude
let longitude = photo.longitude
annotation.coordinate.latitude = latitude
annotation.coordinate.longitude = longitude
if photo.image != nil {
annotation.image = photo.image
} else {
annotation.image = #imageLiteral(resourceName: "whiteCircle")
let path = getDocumentsDirectory().appendingPathComponent(photo.uid)
if let image = UIImage(contentsOfFile: path) {
annotation.image = image
} else {
let ref = FIRStorage.storage().reference(forURL: photo.imageUrl)
ref.data(withMaxSize: 5*1024*1024, completion: { (data, error) in
if error != nil {
print(error!)
} else {
if let imageData = data {
if let image = UIImage(data: imageData) {
photo.assignImage(image: image)
annotation.image = image
}
}
}
})
}
}
self.coordinates.append(CLLocationCoordinate2DMake(latitude, longitude))
self.mapView.addAnnotation(annotation)
}
generateOverlay()
}
Как видите, сначала проверяется, содержит ли объект фотографии изображение. Если это не так, он ищет в каталоге документов это изображение. Если его там нет, он наконец загрузит его. Какие-либо предложения?
1 ответ
Решение
Вам нужно сделать что-то вроде этого. Перейти к главной теме. А потом обновить
DispatchQueue.main.async(execute: {
imageView.image = image
})
В моем решении это работает. Надеюсь это поможет.