感谢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)条件,它只是不下载图像 –