未在Tableview中下载Firebase存储映像。如果我替换行let tempigeref=storage.child(“myFiles/sample.jpg”),它将显示单个图像。但是,如果试图获取“myFiles”中的所有图像,它就不起作用。请帮忙
func fetchPhotos()
{
//let database = FIRDatabase.database().reference()
let storage = FIRStorage.storage().reference(forURL: "gs://fir-test-bafca.appspot.com")
let tempImageRef = storage.child("myFiles/")
tempImageRef.data(withMaxSize: (1*1024*1024)) { (data, error) in
if error != nil{
print(error!)
}else{
print(data!)
let pic = UIImage(data: data!)
self.picArray.append(pic!)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
}
最佳答案
您正在引用整个文件夹(myFiles/
)。那不行。您需要分别引用每个图像。
一种方法是在上传图像时将图像元数据写入实时数据库。然后读取元数据(更具体地说是路径),然后以这种方式引用图像。
如果有3个图像要上载和存储,则可以按如下方式编写元数据:
/images
/image1key
/metdata
/path
/image2key
/metdata
/path
/image3key
/metdata
/path
然后你可以查询你的数据库你的图像路径是这样的
let ref = Firebase.database().ref("images")
ref.observe(.value, withCompletion: { snapshot in
if let values = snapshot.value as? [String : Any] {
if let metadata = values["metadata"] as? [String: Any] {
let imagePath = metadata["path"]
//Now download your image from storage.
}
}
})
这不是最干净的代码,你肯定可以改进,但它会起作用的:)