Как я могу получить путь изображения из базы данных Firebase для отображения внутри моего CollectionView? - PullRequest
0 голосов
/ 29 января 2019

Я хочу показать изображение в базе данных Firebase в моем CollectionView.Я пытался, но безрезультатно.Пожалуйста, если вы хотите получить больше информации, спросите меня.

Firebase database screenshot

Это моя ссылка на изображение, которое я загружаю единственное изображение с firebase.

import Foundation
import UIKit
import FirebaseStorage

struct Utility {

    let storageRef = Storage.storage().reference(forURL: "gs://****-******.appspot.com/")
    func getImage(withName name: String, completion: @escaping (UIImage?) -> ()) {
        let imageRef = storageRef.child("images").child(name)
        imageRef.getData(maxSize: 2 * 1024 * 1024) { (data, error) in
            if error == nil && data != nil {
                let image = UIImage(data: data!)
                completion(image)
            } else {
                completion(nil)
            }
        }
    }
}

Это мой словарь FIREBASE, в который я извлекаю информацию из базы данных.

import Foundation

class Place {
    let kImageName = "imageName"

    var imageName: String!

    init(withDictionary dict: [String : Any]) {
        self.imageName = dict[kImageName] as? String
    }
}

Это мой контроллер видения, который я хочу показать в виде массива в моем CollectionView внутри TableViewCell.

import UIKit
import AVFoundation
import FirebaseDatabase
import FirebaseStorage

class GuidaTuristicaCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var imagePlaces: UIImageView!

    var place: Place! {
        didSet {
            if let place = place {
                Utility().getImage(withName: place.imageName!, completion: { (image) in
                    DispatchQueue.main.async {
                        self.imagePlaces.image = image
                    }
                })
            }
        }
    }
}

class GuidaTuristicaTableViewCell: UITableViewCell {

    @IBOutlet weak var collectionView: UICollectionView!

}

class GuidaTuristicaViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UIScrollViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate {

    var place: Place?

    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! GuidaTuristicaTableViewCell

        cell.collectionView.dataSource = self
        cell.collectionView.delegate = self
        return cell
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 1
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! GuidaTuristicaCollectionViewCell
        cell.place = place
        return cell
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...