【发布时间】:2016-09-22 08:22:25
【问题描述】:
感谢 Firebase 的重大更新,我正在将我的应用程序的图像托管从 AWS 切换到现在包含在 Firebase 中的 GS 存储。 我已经导入了所有必要的 pod,这个应用程序已经成功地将图像上传到分配的存储桶,但问题是当我想下载到存储的内存图像时,应用程序崩溃,调试我在 FIRStorageReference 对象中发现以下错误:“使用未声明的类型‘FirebaseStorage’” 我正在将 Firebase 标头导入函数所在的 VC。
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) 时会在返回图像中引发上述错误!
致命错误:在展开可选值时意外发现 nil
imageRef 的打印描述:表达式产生错误: /var/folders/9q/g2rz2_hj15548cf15yrxz37c0000gn/T/lldb/1645/expr11.swift:1:46: 错误:使用未声明的类型“FirebaseStorage” $__lldb__DumpForDebugger(Swift.UnsafePointer(bitPattern: 0x11d028fa0).内存) ^~~~~~~~~~~~~~~ /var/folders/9q/g2rz2_hj15548cf15yrxz37c0000gn/T/lldb/1645/expr11.swift:1:45: 注意:在将这个 '
'print(imageRef)' 的输出打印 GS 参考 (gs://project-xxxxxx...) 但 '.dataWithMaxSize()' 失败
提前致谢
(几天后) 好的,这是一个解决方法,因为 FIRStorage 方法不会修改单独函数中的 var 以供以后返回:
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 它是一个 void 函数,但它可以工作
【问题讨论】:
标签: ios swift firebase firebase-storage