感謝Firebase的重大更新,我將我的應用的圖像託管從AWS切換到現在包含的Firebase中的GS存儲。 我已經導入了所有必需的豆莢,這個應用程序已經成功上傳圖像到指定的桶,但問題是當我想下載到存儲器中的圖像存儲,並且應用程序崩潰,調試我發現在我的FIRStorageReference中出現以下錯誤對象:「使用未聲明的類型」FirebaseStorage「」 我正在將Firebase標題導入函數所在的VC。將數據下載到內存中的FirebaseStorage問題(Swift)
func getImage(imageName: String) -> UIImage {
let imageRef = kBucketRef.child(imageName)
print(imageRef)
var imageData: NSData?
var image: UIImage?
imageRef.dataWithMaxSize(200 * 1024) { (data, error) -> Void in
if (error != nil) {
imageData = data
image = UIImage(data: imageData!)
} else {
print(error?.localizedDescription)
}
}
return image!
}
後試圖顯示圖像時:image.image =的getImage(imageName)被調用它的回報圖像拋出提到的錯誤!
fatal error: unexpectedly found nil while unwrapping an Optional value
Printing description of imageRef: expression produced error: /var/folders/9q/g2rz2_hj15548cf15yrxz37c0000gn/T/lldb/1645/expr11.swift:1:46: error: use of undeclared type 'FirebaseStorage' $__lldb__DumpForDebugger(Swift.UnsafePointer< FirebaseStorage.FIRStorageReference >(bitPattern: 0x11d028fa0).memory) ^~~~~~~~~~~~~~~ /var/folders/9q/g2rz2_hj15548cf15yrxz37c0000gn/T/lldb/1645/expr11.swift:1:45: note: while parsing this '<' as a type parameter bracket $__lldb__DumpForDebugger(Swift.UnsafePointer(bitPattern: 0x11d028fa0).memory)
從輸出 '打印(imageRef)' 打印GS引用(GS://項目-XXXXXX ......),但 '.dataWithMaxSize()' 未能預先
謝謝
(天后) 好吧,這裏是一個解決辦法,因爲FIRStorage方法不是在以後回報分離功能修改瓦爾:
let bucket: String = "gs://mystoragetesterxxxxxx.appspot.com"
func getImage() {
let storage = FIRStorage.storage()
let storageRef = storage.referenceForURL(bucket)
let path = storageRef.child("photo.jpg")
print(path)
path.dataWithMaxSize(1024 * 1024) { (data, error) in
if (error != nil) {
print(error!.localizedDescription)
} else {
self.imageView.image = UIImage(data: data!)
}
}
}
現在的getImage這是一個無效的功能,但它的工作原理
根據你的建議改變了函數,它拋出nil,存儲的文件路徑是正確的,那裏有一個文件,但它仍然沒有分配給「數據」,存儲桶被配置爲公共。 它不會觸發(error!= nil)條件,它只是不下載圖像 –