【发布时间】:2018-05-24 10:05:25
【问题描述】:
我试图简单地将图片从 firebase 存储加载到我的 IOS 应用程序中,但我的完成块没有被调用。
我最初使用 TableViewController 加载大量图片就可以了。当我单击 tableview 中的一个项目时,它会以模态方式呈现一个简单的视图控制器。我使用在 TableViewController 中成功加载图片的相同代码。 在这个模态显示的视图控制器中,我的 FirebaseStorage 完成块不执行。当我退出这个视图控制器时,TableViewController 仍然可以根据我的请求加载加载图片。
我已使用-FIRAnalyticsDebugEnabled 启用日志记录
并且在我的日志中仍然没有收到任何错误。
我已在 FirebaseStorage 的规则中临时允许所有读取和写入。
我已经看到这个问题 iOS setValue withCompletionBlock not called 在 cmets 中指出,特定版本的 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!");
}];
我完全不知道接下来要采取什么步骤。有没有人遇到过类似的事情或者有什么建议?
感谢任何可能有帮助的反馈!谢谢!
【问题讨论】:
标签: objective-c firebase firebase-storage