【发布时间】:2020-02-13 08:54:00
【问题描述】:
我正在努力将图片从 firebase 存储下载到 swift 5 中的 UIImage。
我可以很好地上传它们。当我试图检索图片时,UIImage 显示黑屏。
这是我返回 UIImage 的函数
import UIKit
import Firebase
func getImageEvent (imagePath : String) -> UIImage? {
var myImage : UIImageView?
//Access to the storage
let storageRef = Storage.storage().reference(withPath: imagePath)
storageRef.getData(maxSize: 1 * 1024 * 1024) {(data, error) in
if let error = error {
print(error.localizedDescription)
return
}
if let data = data {
print(data.description)
myImage?.image = UIImage(data: data)
}
}
return myImage?.image
}
//Call the function
getImageEvent (imagePath :"9U4BoXgBgTTgbbJCz0zy/eventMainImage.jpg")
在控制台中,我可以很好地看到 print(data.description) 的值。
默认情况下,UIImageView 中有一个图像。调用该函数时,默认图像被替换为黑屏。
你能帮我理解错误吗?
非常感谢
【问题讨论】:
-
从快速扫描看来,
myImage?.image = UIImage(data: data)在return myImage?.image执行时还没有运行。您应该能够通过在调试器中运行代码或放置一些打印语句来查看流程来轻松验证这一点。如果这是原因,您可以通过传入闭包轻松修复它,类似于在此答案中的完成方式:stackoverflow.com/a/52406759 -
代码比互联网快,从异步函数返回值通常不起作用。
标签: swift firebase uiimage firebase-storage