標題說明了所有內容。我只是無法從Firebase存儲目錄下載圖像。下面是代碼,它調用的功能設置數據的片段,然後還要求它試圖下載圖片的功能:在Swift中下載圖片時,Firebase參考「變量不可用」
for element in Dict {
if let itemDict = element.value as? [String:AnyObject]{
let name = itemDict["name"] as! String
let price = itemDict["price"] as! Float
let imageObject = itemDict["image"] as! NSDictionary
let hash = imageObject["hash"] as! String
let storageDir = imageObject["storageDir"] as! String
let image:UIImage = self.downloadImageProductFromFirebase(append: hash)!
let product = Product(name: name, image: image, imageName:hash, price: price, storageDir : storageDir)
self.productList.append(product)
}
}
print(Dict)
self.myTable.reloadData()
在此可以嘗試下載圖像的代碼:
func downloadImageProductFromFirebase(append:String) -> UIImage?{
let gsReference = Storage.storage().reference(forURL: "gs://fridgeapp-3e2c6.appspot.com/productImages/productImages/" + append)
var image : UIImage?
gsReference.downloadURL(completion: { (url, error) in
if error != nil {
print(error.debugDescription)
return
}
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
if error != nil {
print(error.debugDescription)
return
}
guard let imageData = UIImage(data: data!) else { return }
DispatchQueue.main.async {
image = imageData
}
}).resume()
})
return image
}
但是,由於某種原因,它只是在調用最後一個函數時崩潰,並說「致命錯誤:在解包可選值時意外發現零」。我試圖使用調試器,並且發現Firebase對Storage變量的引用說「變量不可用」。
有人可以幫助我嗎?我想我讀了大約一百次的Firebase文檔,但仍然無法理解這一點。
謝謝!