未调用FirebaseStorage完成块。目标C

时间:2018-05-21 17:32:44

标签: objective-c firebase firebase-storage

我想简单地将firebase存储中的图片加载到我的IOS应用程序中,但我的完成块没有被调用。

我最初使用TableViewController可以很好地加载大量图片。当我点击tableview中的一个项目时,它会以模态方式呈现一个简单的视图控制器。我使用相同的代码成功加载TableViewController中的图片。 在这个模态显示的视图控制器中,我的FirebaseStorage完成块不会执行。当我退出此视图控制器时,TableViewController仍然可以根据我的要求加载负载图片。

我已使用-FIRAnalyticsDebugEnabled启用了日志记录 并且在我的日志中仍然没有收到任何错误。

我在FirebaseStorage规则中暂时允许所有读写操作。

我已经看到了这个问题iOS setValue withCompletionBlock not called,该问题在评论中指出特定版本的firebase在FirebaseDatabase阻塞其他一些完成块方面存在一些问题。

文档说“修复了在连接到Firebase实时数据库服务后立即执行事务或添加事件观察器的竞争条件可能导致其他操作的完成块无法执行。”来自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

我已经记录了我的代码以找到我的代码被调用,但是从不执行完成块。我正在使用正确的子ID,所以我知道存储引用确实存在。我也知道这不是一个连接问题,因为其他图片在几秒钟之前加载就好了。

- (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!");
    }];

我完全迷失了下一步的步骤。有没有人经历类似或有任何建议?

我感谢任何可能有帮助的反馈!谢谢!

1 个答案:

答案 0 :(得分:0)

先导入

#import "UIImageView+FirebaseStorage.h"

然后加载图片来自参考使用此

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

[yourImage sd_setImageWithStorageReference:gsReference placeholderImage:nil];