You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift调用listAll列举存储桶根目录时触发Expected gs://...子元素错误

Firebase云存储iOS端listAll根目录崩溃问题解决

异常原因

这个异常是Firebase iOS Storage SDK 8.0.0到8.2.0版本的已知bug,根目录路径的父子关系校验逻辑写反,导致判断根目录下子文件的所属关系时,错误要求父级根路径是子文件的子元素,触发内部一致性异常。列举子目录时不会触发该错误逻辑,所以运行正常。

修复方案

  • 方案1:升级SDK版本
    将Firebase Storage SDK升级至8.3.0及以上版本,官方已在该版本修复根路径解析逻辑,升级后原有代码无需修改即可正常运行。
  • 方案2:临时兼容方案(暂无法升级SDK时使用)
    不使用root()方法获取根引用,改为传入空字符串生成根引用即可避开bug,修改后的代码如下:
// 替换root()调用,使用空路径获取根存储引用
let storageReference = Storage.storage().reference("")

// 列举所有条目
storageReference.listAll { (result, error) in
    if let error = error {
        print(error.localizedDescription)
        return
    }
    // 遍历输出所有文件名称
    for item in result.items {
        print(item.name)
    }
}

注意事项

如果存储桶内文件数量较多,不要使用listAll拉取全量数据,容易触发接口限流或者内存占用过高,建议使用list(maxResults:)配合分页token做分页拉取。

内容的提问来源于stack exchange,提问作者MaxBrt18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 22:54:04