0

Firebase Storage の画像を使用して入力する CollectionView があります。「userId」ノードの下に画像を保存します。ノードの下で利用可能なファイルの存在を一括で確認したいので、それらを配列に格納できます。

それぞれの 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 から画像を一括で取得するにはどうすればよいですか?

4

2 に答える 2

2

現在、Firebase Storage との間での一括またはバッチ アップロード/ダウンロードはありません。ここで質問が多すぎると思います。ファイルを圧縮してその方法で保存するか、圧縮したバンドルを返却するかなどです。ダウンロード URL の配列か、適切なデータか?

複数のファイルを一覧表示してダウンロードする問題に対する私たちの解決策は、それらを個別にアップロードし、別のデータベース (Firebase Realtime Database など) に URL を保存することです。これを同期して、各ファイルを個別にダウンロードするために使用できます (または、ダウンロード ファイルを保存します)。などのツールを使用してSDWebImage、適切な URL をダウンロードまたはキャッシュします)。

この方法の例については、https://www.youtube.com/watch?v=xAsvwy1-oxE&feature=youtu.beを参照してください。

于 2016-06-16T04:35:32.787 に答える