2016-06-15 13 views
0

Firebase Storageの画像を使用してコレクションビューを作成しています。私は 'userId'ノードの下に画像を保存します。ノードの下で利用可能なファイルの存在を確認したいので、配列に格納することができます。Firebase Storageからノード下の複数の写真を取得する

私は、しかし、私はこれは非常に間違ったアプローチであると信じて、それぞれに対して個別のURLを取得しようとしました。しかし、私は最も効率的な方法でそれを行う方法とどこにcollectionView.reload()を置くかを理解できませんでした。また

let storage = FIRStorage.storage() 
let firstImageRef = storage.referenceForURL("gs:storageUrl").child(uid).child("profile.jpg") 

firstImageRef.downloadURLWithCompletion { (URL, error) -> Void in 
    if (error != nil) { 
     print(error) 
    } else { 
     if let url = URL { 
     self.databaseImagesOrder.append(url) 
     } 
    } 
} 

let secondImageRef = storage.referenceForURL("gs:storageUrl").child(uid).child("second_pic.jpg") 
secondImageRef.downloadURLWithCompletion { (URL, error) -> Void in 
    if (error != nil) { 
     print(error) 
    } else { 
     if let url = URL { 
     self.databaseImagesOrder.append(url) 
     } 
    } 
} 

// etc.. 

collectionView.reloadData() 

、それは最初のURLを取得してから画像を取得するよりも優れたNSDataなどの画像を取得するために優れている:これは私がやったことありますか?その場合、Firebase Storageから一括して画像を取得するにはどうしたらいいですか?

+1

チームメンバーからhttp://stackoverflow.com/questions/37694009/how-to-download-and-view-images-from-the-new-firebase-storage/376​​94730#comment62885212_37694730 – Shubhank

+0

私は3つの完成を得ることができますか?それを行う正しい方法は何ですか?私は別々に行うと、 'collectionView.reload()'をどこで呼び出すのか混乱します。 – senty

+0

フォルダからすべてのファイルを一度にロードしたいと思うようです。これはFirebase Storageでサポートされている操作ではありません。また、ほとんどのファイルでは、ファイルのサイズが余分なラウンドトリップを上回るため、多くの場合に役立ちます。 –

答えて

2

Firebase Storageにアップロード/ダウンロードするバルクファイルやバッチファイルはありません。ファイルが圧縮されて保存されるか、圧縮されたバンドルなどが返されますか?ダウンロードURLや適切なデータを返すだけですか?

複数のファイルをリストアップしてダウンロードするという問題の解決策は、ファイルを個別にアップロードして別のデータベース(Firebaseリアルタイムデータベースなど)に保存して、同期して各ファイルを個別にダウンロードすることですダウンロードファイルを保存し、適切なURLをダウンロードまたはキャッシュするにはSDWebImageのようなツールを使用します)。

は、私たちがこれをしなかった方法の例については、https://gist.github.com/mcdonamp/cc45567cd95ba2a62017cb21e891effdhttps://www.youtube.com/watch?v=xAsvwy1-oxE&feature=youtu.beを参照してください。

関連する問題