Проблема в том, что StorageReference.getData
является асинхронной функцией, но вы пытаетесь синхронно вернуть значение. Вам нужно использовать обработчик завершения для возврата асинхронно полученного значения.
func getImagesDownloaded(reference: StorageReference, completion: (UIImage?,Error?)->()) {
reference.getData(maxSize: 10*1024*1024) { (data, error) in
guard error == nil, let data = data else {
completion(nil,error)
return
}
guard let image = UIImage(data: data) else {
completion(nil, FirebaseErrors.expectedImage)
return
}
completion(image,nil)
}
}
enum FirebaseErrors: Error {
case expectedImage
}
Тогда вам нужно использовать это так:
getImagesDownloaded(reference: yourStorageReference, completion: { image, error in
guard let image = image, error == nil else {
print(error)
return
}
// Assign your image to a UIImageView or do anything else with it inside the closure (before the ending `}`)
yourImageView.image = image
})