Swift, как отобразить все изображения в коллекции хранилищ Firebase - PullRequest
0 голосов
/ 15 июня 2019

Используя dataReference, который я подключил к своей базе данных Firebase, я хочу отобразить все изображения в коллекции в 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 голосов
/ 15 июня 2019

Просмотрите документацию Swift для URLRequest.Основные части запроса: httpBody httpMethod HeaderFields url

Просмотрите URLSession, чтобы выяснить, как декодировать данные в массив изображений.Будет выглядеть примерно так: URLSession.shared.dataTask, который будет выражением для дальнейших исследований.

Это пример кода для получения названий фильмов из базы данных API в Swift 4 и / или 5:

func fetchMoviesFromFirebase (завершение: @escaping 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 будут ценой, но в вашем случае вы будете подтасовывать свои данные для изображений, а не названий фильмовиспользуя соответствующий тип по вашему выбору (для изображений)

...