未在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.
    }
  }
})

这不是最干净的代码,你肯定可以改进,但它会起作用的:)

10-06 04:44