我有一个CollectionView,我正在使用Firebase Storage中的图像进行填充。我将图像存储在“ userId”节点下。我想检查节点下可用的大量文件是否存在,因此可以将它们存储在数组中。
我试图分别为每个URL检索URL,但是,我认为这是一种非常错误的方法。但是,我不知道如何以最有效的方式做到这一点以及放在哪里collectionView.reload()。这是我所做的:
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()
另外,将图像作为NSData来获取是否比先获取url然后再获取图像更好?如果是这样,如何从Firebase Storage批量检索图像?
目前,没有从Firebase Storage批量上传或批量上传/下载的文件- 我认为这里有太多问题:我们将文件压缩并以这种方式存储吗?是否会返回压缩包等?我们是否会返回一组下载URL或适当的数据?
对于列出和下载多个文件的问题,我们的解决方案是单独上传文件并将URL存储在另一个数据库(例如Firebase Realtime数据库)中,然后您可以同步并用于单独下载每个文件(或存储下载文件)并使用类似的工具SDWebImage来下载或缓存相应的网址)。
SDWebImage
有关如何执行此操作的示例,请参见&feature=youtu.be)。