我使用this tutorial将数据添加到Firebase。它完美的作品。由于快照和持久性,它也可以离线工作。Firebase存储图像在Swift 3中的持久性
我还将图片添加到this link的Firebase存储中。这也适用,但不适用于持久性。我试图从数据复制快照(第一个教程)来做到这一点,但FIRStorageReference没有快照选项,据我所知。我怎样才能做到这一点?
import Foundation
import Firebase
import FirebaseStorage
struct MenuItemImage {
let image: NSData
let ref: FIRStorageReference?
let key: String
init(image: NSData, key: String = "") {
self.key = key
self.image = image
self.ref = nil
}
init(snapshot: FIRDataSnapshot) { // this should be something like FIRStoreSnapshot
key = snapshot.key
let snapshotValue = snapshot.value as! [String: AnyObject]
image = snapshotValue["image"] as! NSData
ref = snapshot.ref // errors as cannot assign value of tupe FIRDatabaseReference to type FIRStorageReference
}
func toAnyObject() -> Any {
return [
"image": image
]
}
}
你能详细说明你的意思是“图像持久性”吗? –
当然,对于正常的数据(字符串),我使用的代码创建了一个数组,即使设备处于脱机状态,该数组仍会保存字符串。 Firebase的行为与NSUserDefaults或Core数据类似。没有任何真正的设置。但是,图片存储在Firebase的其他区域,因此当设备处于脱机状态时,字符串仍然显示,但图像消失(阵列为空) – ThundercatChris
Firebase存储和Firebase数据库是两种不同的产品。 Firebase数据库SDK可以为您处理磁盘持久性。 Firebase存储SDK不支持。要缓存从Firebase存储获得的图片,您通常会使用第三方库。看到任何这些:http://stackoverflow.com/search?q=%5Bfirebase-storage%5D%5Bios%5D+cache+images –