Проблема в том, что вы пытаетесь работать с изображением var за пределами закрытия getData.
self.storageRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
print("PLASESEE")
print(error.localizedDescription)
// Uh-oh, an error occurred!
} else {
// Data for "images/island.jpg" is returned
let image = UIImage(data: data!)
} <- closure ends here and image is only valid above this
}
print(image) <- image may not be populated at this point
self.hallData.append... image
}
Это закрытие асинхронное, и вызовдо self.hallData.append...
произойдет намного раньше, чем переменная изображения будет заполнена внутри замыкания.Код гораздо быстрее, чем в Интернете.
Переместите это утверждение в замыкание сразу после let image =
, и оно должно работать.
self.storageRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
print("An error occurred in downloading the image")
print(error.localizedDescription)
} else {
let image = UIImage(data: data!)
self.hallData.append... image
//reload your tableView or UI as self.hallData is now valid
}
}
Если вы сделаете это таким образом, то предыдущий var image: UIImage!
можно удалить, так как он не имеет функции.В противном случае удалите let, прежде чем let image = внутри замыкания.