Как заполнить ячейку UICollectionView изображениями из хранилища Firebase? - PullRequest
1 голос
/ 12 июля 2020

Я создаю приложение, которому требуется слайд-шоу изображений в качестве фона для приветственного контроллера. Мой план состоит в том, чтобы импортировать изображения в папку в Firebase Storage, настроить функцию службы для загрузки изображений папки и добавления в модель, а затем заполнить ячейку представления коллекции контроллера изображениями. На правильном ли я пути для создания слайд-шоу изображений? Спасибо.

// Модель BackgroundImage

struct BackgroundImage {
    
    let backgroundImageUrl: String
    
    init(dictionary: [String : Any]) {
        self.backgroundImageUrl = dictionary["backgroundImageUrl"] as? String ?? ""
    }
    
}

// Сервис

struct BgImgs {
    let backgroundImage: UIImage
}

static func fetchBackgroundImages(bgImgs: BgImgs, completion: @escaping([BackgroundImage]) -> Void) {
        
        var backgroundImages = [BackgroundImage]()
        
        guard let imageData = bgImgs.backgroundImage.jpegData(compressionQuality: 0.3) else { return }
        let filename = NSUUID().uuidString
        let storageRef = STORAGE_REF.reference(withPath: "/background_images/\(filename)")
        
        storageRef.putData(imageData, metadata: nil) { (meta, error) in
            storageRef.downloadURL { (url, error) in
                guard let backgroundImageUrl = url?.absoluteString else { return }
                
                let values = ["backgroundImageUrl" : backgroundImageUrl]
                let bgImages = BackgroundImage(dictionary: values)
                backgroundImages.append(bgImages)
                completion(backgroundImages)
            }
        }
        
    }

// WelcomeController

private var backgroundImages = [BackgroundImage]()

func fetchBackgroundImages() {
        Service.fetchBackgroundImages(bgImgs: backgroundImages) { backgroundImages in
            self.backgroundImages = backgroundImages
        }
    }

1 Ответ

0 голосов
/ 12 июля 2020

Вам нужно будет перезагрузить UICollectionView после завершения fetchBackgroundImages выборки.

func fetchBackgroundImages() {
        Service.fetchBackgroundImages(bgImgs: backgroundImages) { backgroundImages in
            self.backgroundImages = backgroundImages
            self.collectionView.reloadData()
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...