Swift如何显示Firebase存储集合中的所有图像

时间:2019-06-15 00:58:20

标签: swift firebase-storage collectionview

使用我已连接到Firebase数据库的dataReference,我希望将集合中的所有图像显示到CollectionView中,以供用户查看。

这里有文档,但是我在如何检索文本方面没有发现太多。 https://firebase.google.com/docs/firestore/query-data/get-data

关于stackOverflow的其他答案要么使用实时数据库,要么使用文本链接和图像,这不是我想要的。我的图像上传到集合中Firebase Storage上的文件夹中,并且需要全部下载并显示给用户。

如何使我的“ dataReference”可以在集合视图中显示。我不了解.getDocuments函数,也不了解这些文件将存放在何处。任何帮助将不胜感激。

let dataReference = Firestore.firestore().collection("images")


dataReference.getDocuments() { (querySnapshot, err) in
                if let err = err {
                    print("Error getting documents: \(err)")
                    } else {
                for document in querySnapshot!.documents {
                    print("\(document.documentID) => \(document.data())")
        }
    }
}

1 个答案:

答案 0 :(得分:0)

查找有关URLRequest的Swift文档。请求的主要部分是: httpBody httpMethod 标头字段 网址

查找URLSession以确定如何将数据解码为图像数组。看起来像URLSession.shared.dataTask,它将成为进一步研究的表达。

这是在Swift 4和/或5中从API数据库获取电影标题的示例代码:

func fetchMoviesFromFirebase(完成:@转义CompletionHandler = {_ in}){

    let requestURL = firebaseURL.appendingPathExtension("json")

    URLSession.shared.dataTask(with: requestURL) { (data, response, error) in
        if let error = error {
            NSLog("Error fetching Task \(error)")
            completion(error)
            return
        }
        guard let response = response else {
            NSLog("Response from server: \(response)")
            return
        guard let data = data else {
            NSLog("No data returned by data task")
            completion(NSError())
            return
        }
        do {
            let movieTitles = Array(try JSONDecoder().decode([String: MovieTitles].self, from: data).values)
            completion(nil)
        } catch {
            NSLog("Error decoding task representations: \(error)")
            completion(error)
            return
        }
        }.resume()

在这种情况下,movieTitles是价格,但在这种情况下,您将使用选择的适当类型(对于图像)来为图像而不是电影标题装配数据