2017-05-21 17 views
0

FirebaseストレージイメージがTableviewでダウンロードされていません。私が行を置き換えた場合、tempImageRef = storage.child( "myFiles/sample.jpg")、それは単一のイメージを表示しています。しかし、 'myFiles'内のすべての画像を取得しようとすると、動作しません。助けてくださいFirebaseストレージイメージがTableviewでダウンロードされない

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() 
       } 
      } 
     } 
} 
+0

'UITableViewDataSource'メソッドを投稿できますか? – orxelm

答えて

3

フォルダ全体(myFiles/)を参照しています。それは動作しません。それぞれの画像を個別に参照する必要があります。

これを行う1つの方法は、画像をアップロードするときにリアルタイムのデータベースに画像メタデータを書き込むことです。その後、メタデータ(より具体的にはパス)を読み込み、そのように画像を参照します。

あなたがアップロードして保存したい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. 
    } 
    } 
}) 

のようなあなたのイメージのパスのためのあなたのデータベースを照会することができますこれは一番きれいなコードではなく、あなたは間違いなく改善することができますが、うまくいくでしょう:)

+1

補遺として;/images/image1key:image1Pathや/ images/image2key:image2pathのようなキーと値のペアとしてパスを保存するだけで、構造を単純化することができます。それはコードをかなり単純化するでしょう。しかし... OPが画像(おそらく画像名や他のデータ)への経路以上のものを保存したい場合、あなたの設定は適切な解決策です。 – Jay

+0

はい、私はそうしています&うまくいきました。最初にFirebase Storageの写真を追加し、Firebase Databaseのノードにそれらの写真のダウンロードリンクを追加しました。 ありがとうございます... –

関連する問題