Блок завершения FirebaseStorage не вызван. Цель-C

Я пытаюсь просто загрузить изображение из хранилища firebase в свое приложение IOS, но мой блок завершения не вызывается.

Сначала я использую TableViewController, который отлично загружает множество изображений. Когда я нажимаю на элемент в табличном представлении, он модально представляет простой контроллер представления. Я использую тот же код, который успешно загружает изображения в TableViewController. В этом модально представленном контроллере представления мои блоки завершения FirebaseStorage не выполняются. Когда я выхожу из этого контроллера представления, TableViewController все еще может загружать изображения по мере необходимости, когда я запрашиваю.

Я включил ведение журнала с помощью -FIRAnalyticsDebugEnabled и по-прежнему не получаю никаких ошибок в моем журнале.

Я временно разрешил все операции чтения и записи в правилах FirebaseStorage.

Я видел этот вопрос iOS setValue withCompletionBlock не вызывается, в котором говорится в комментариях, что у конкретной версии firebase есть проблема с FirebaseDatabase, блокирующей некоторые другие блоки завершения.

В документации говорилось: «Исправлено состояние гонки, при котором выполнение транзакции или добавление наблюдателя событий сразу после подключения к службе базы данных Firebase Realtime могло приводить к тому, что блоки завершения для других операций не выполнялись». от https://firebase.google.com/support/release-notes/ios#3.6.0

В приведенном выше вопросе автор вопроса устранил проблему, обновившись до Firebase 3.7.1, я использую 5.0.1.

Вот версии, которые я использую

Using Firebase (5.0.1)
Using FirebaseAnalytics (5.0.0)
Using FirebaseAuth (5.0.0)
Using FirebaseCore (5.0.1)
Using FirebaseDatabase (5.0.0)
Using FirebaseInstanceID (3.0.0)
Using FirebaseStorage (3.0.0)
Using GTMSessionFetcher (1.1.15)
Using GoogleToolboxForMac (2.1.4)
Using leveldb-library (1.20)
Using nanopb (0.3.8)
Generating Pods project

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

- (void)loadPicture {
    NSLog(@"Attempting to load picture");
    FIRStorageReference *ref = [[self.storageRef child:self.detailItem.faction] child:[self.detailItem firebaseEntry]];        
    [ref dataWithMaxSize:1024*1024 completion:^(NSData * _Nullable data, NSError * _Nullable error) {
        NSLog(@"Got a result!");
    }];

Я совершенно не знаю, что делать дальше. Кто-нибудь испытывал что-то подобное или есть какие-нибудь советы?

Я ценю любую обратную связь, которая может помочь! Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
138
2

Ответы 2

Сначала импортируйте это

#import "UIImageView+FirebaseStorage.h"

а затем для загрузки изображения из ссылки используйте это

FIRStorageReference *gsReference = [[self.storageRef child:self.detailItem.faction] child:[self.detailItem firebaseEntry]];        

[yourImage sd_setImageWithStorageReference:gsReference placeholderImage:nil];

если у вас есть сомнения относительно этого кода, спросите меня, я помогу вам

Jignesh Mayani 23.05.2018 07:47

Я решил проблему, создав новый ViewController, чтобы делать то же самое с нуля. К сожалению, я не знаю, в чем заключалась исходная проблема и как ее воспроизвести. Мой оригинальный ViewController был максимально простым. Проблема выглядела как странный сбой / недостаток в API, xcode или эмуляторе, поскольку ошибок не было, и она исправилась в новом ViewController с использованием того же точного кода.

Все остальное, что я видел в Интернете, указывает на проблему, связанную с Firebase 3.6.0 и ниже. Убедитесь, что вы используете последнюю версию Firebase, а затем воссоздайте тот же ViewController, и ваша проблема, скорее всего, будет решена.

Другие вопросы по теме