Как получить изображения из хранилища Firebase в соответствии с категорией изображений по желанию - PullRequest
0 голосов
/ 08 мая 2019

Как получить изображения из хранилища Firebase, в котором я вручную создал папки в соответствии с категорией моего «приложения для обоев» и создал список «элементов» в соответствии с категорией моих обоев. Я не понимаю, как получить изображения в соответствии с «элементами» (они есть в приведенном ниже коде) из хранилища базы данных и соответственно отобразить их.

Я просто хочу сохранить все изображения в соответствии с категорией «предметов», которая указана в приведенном ниже коде, и отобразить ее в приложении.

import UIKit
import GlidingCollection
import FirebaseStorage
import Firebase

class ViewController: UIViewController {

    @IBOutlet var glidingView: GlidingCollection!
    fileprivate var collectionView: UICollectionView!
    fileprivate var items = ["riches", "animals", "nature", "architecture","toys"]
    fileprivate var images: [[UIImage?]] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        setup()
    }
    func setup() {
        setupGlidingCollectionView()
        loadImages()
    }

    func setupGlidingCollectionView() {
        glidingView.dataSource = self

        let nib = UINib(nibName: "CollectionCell", bundle: nil)
        collectionView = glidingView.collectionView
        collectionView.register(nib, forCellWithReuseIdentifier: "Cell")
        collectionView.delegate = self
        collectionView.dataSource = self
        collectionView.backgroundColor = glidingView.backgroundColor
    }
    func loadImages() {
        let storage = Storage.storage()
        let storageRef = storage.reference()
        let starsRef = storageRef.child("Animals")
        starsRef.downloadURL { url, error in
            if let error = error {
                print("not there")
            } else {
                for item in self.items {
                    let imageURLs = FileManager.default.fileUrls(for: "jpeg", fileName: item)
                    var images: [UIImage?] = []
                    for url in imageURLs {
                        guard let data = try? Data(contentsOf: url) else { continue }
                        let image = UIImage(data: data)
                        images.append(image)
                    }
                    self.images.append(images)
                }
            }
        }
    }
}

// MARK: - Setup


// MARK: - CollectionView ?
extension ViewController: UICollectionViewDataSource, UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return images.count
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as? CollectionCell else { return UICollectionViewCell() }
        let section = glidingView.expandedItemIndex
        let image = images[section][indexPath.row]
        cell.imageView.image = image
        cell.contentView.clipsToBounds = true

        let layer = cell.layer
        let config = GlidingConfig.shared
        layer.shadowOffset = config.cardShadowOffset
        layer.shadowColor = config.cardShadowColor.cgColor
        layer.shadowOpacity = config.cardShadowOpacity
        layer.shadowRadius = config.cardShadowRadius
        layer.shouldRasterize = true
        layer.rasterizationScale = UIScreen.main.scale
        return cell
    }
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let section = glidingView.expandedItemIndex
        let item = indexPath.item
        print("Selected item #\(item) in section #\(section)")
    }
}

// MARK: - Gliding Collection ?
extension ViewController: GlidingCollectionDatasource {

    func numberOfItems(in collection: GlidingCollection) -> Int {
        return items.count
    }

    func glidingCollection(_ collection: GlidingCollection, itemAtIndex index: Int) -> String {
        return "– " + items[index]
    }
}

в другом быстром файле, связанном с ячейкой представления коллекции. "CollectionCell.xib"

import UIKit

class CollectionCell: UICollectionViewCell {
    @IBOutlet weak var imageView: UIImageView!

}

Я хочу, чтобы все изображения были распределены по категориям и в соответствии с элементами, отображаемыми в моем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...