Загрузка Firebase Storage не проходит в первом запуске swift

Вы можете использовать библиотеку Apache для этого: RandomStringUtils

RandomStringUtils.randomAlphanumeric(20).toUpperCase();

0
задан Do2 13 July 2018 в 15:40
поделиться

1 ответ

Я подозреваю, что проблема в том, что вы действительно не используете диспетчерскую группу. Проблема здесь в том, что цикл for по существу выполняется и завершается немедленно - да, эти обратные вызовы будут вызываться в более поздней точке, но это не означает, что код, сообщающий группе диспетчеризации, должен уйти.

(Кроме того, я не вижу вызов notify в вашем примере кода, но я предполагаю, что это часть кода, который вызывается позже.)

Поэтому, если вы делаете что-то в своем коде, которое зависит от того, что эти изображения уже загружены, вы получите сообщение об ошибке. И я подозреваю, что это, вероятно, работает во второй раз, потому что вы захватываете кешированные данные, которые, вероятно, выполняются достаточно быстро для ваших целей.

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

let group = DispatchGroup()
print("starting ImageSetting")
for query in friendArray {
    if imageList[query.uid] == nil {
        print("going through iteration")
        group.enter()
        self.profpicRef.child("profile_pic/" + query.uid + ".jpeg").getData(maxSize: 1
        * 1024 * 1024) { (data, error) in
            print("accessing image")
            if let error = error {
                self.imageList[query.uid] = self.defaultImage
            } else {
                self.imageList[query.uid] = UIImage(data: data!)
            }
            group.leave()
        }
    }
}
group.notify(queue: .main) {
    print("Images done loading")
}
0
ответ дан Todd Kerpelman 17 August 2018 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: