Fireview存储图像未在Tableview中下载

时间:2017-05-21 09:34:42

标签: ios swift image firebase firebase-storage

Fireview存储图像未在Tableview中下载。如果我替换了行tempImageRef = 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()
                }
            }
        }
}

1 个答案:

答案 0 :(得分:3)

您正在引用整个文件夹(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.
    }
  }
})

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