ios - Firebase StorageReference.listAll() 完成处理程序在错误情况下意外触发两次
问题描述
我正在编写一个 iOS 应用程序,我想列出 Firebase 存储文件夹中的所有文件。如果我理解正确,这样做的方法是使用 StorageReference.listAll() 函数,该函数将完成处理程序作为其参数。问题是在错误情况下——例如如果用户离线——这个处理程序会触发两次:第一次有错误,第二次没有。这是我的代码,为了这个问题的目的而简化:
let storageReference = Storage.storage().reference().child(userID)
storageReference.listAll { (result, error) in
print("handler fires")
if let error = error {
print("error")
} else {
print("no error")
}
}
在常规情况下,这会输出“处理程序触发”、“无错误”,这是人们所期望的。但是,如果用户离线,它会输出“handler fires”、“error”、“handler fires”、“no error”,这看起来很奇怪。有谁知道为什么处理程序在错误情况下触发两次,以及为什么第二次触发没有报告错误?
这是完整的错误日志:
处理程序开火
错误描述:Error Domain=FIRStorageErrorDomain Code=-13000 “发生未知错误,请检查服务器响应。” UserInfo={_kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=50, NSErrorFailingURLStringKey=https://firebasestorage.googleapis.com/v0/b/xxx.appspot.com/o?prefix=xxx/&delimiter=/, NSUnderlyingError=0x282dcdc80 {错误域= kCFErrorDomainCFNetwork 代码=-1009 "(null)" UserInfo={_kCFStreamErrorCodeKey=50, _kCFStreamErrorDomainKey=1}}, NSErrorFailingURLKey=https://firebasestorage.googleapis.com/v0/b/xxx.appspot.com/o?prefix=xxx /&delimiter=/,_NSURLErrorRelatedURLSessionTaskErrorKey=("LocalDataTask <1487E789-1446-42FF-9F5F-EEF8AD4370E1>.<4>"), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <1487E789-1446-42FF-9F5F-EEF8AD4370E1>.<4>,
处理程序开火
没有错误
解决方案
推荐阅读
- git - GitHub - 在本地提取现有项目并替换现有文件而不删除不存在的文件
- python - 如何在 Travis 中使用 Python (PyTest) 测试我的 C 程序?
- react-native - 当应用程序被杀死或应用程序未运行时无法获取推送通知数据
- azure-functions - Azure Functions Premium 计划超时
- python - 如何在 Python 中禁用 checkboxtreeview 小部件中的复选框
- python - 如何获得 2 组 df 列?
- python-3.x - 如何计算 PyTorch 中所有输入的网络梯度 wrt 权重?
- python-3.x - 在 FireFox 中确认警报消息的行为与在 Chrome 中不同
- css - AngularJS - 可扩展行不适用于 ng-repeat
- r - 使用均值函数整理数据框中的列