Firebase Storage listAll列根目录报错:期望gs://路径为子元素
解决Firebase Storage根目录listAll时的NSInternalInconsistencyException错误
这个问题我之前也碰到过,本质是Firebase Storage SDK在处理root()返回的根引用时,内部的路径层级校验逻辑出了问题——它错误地把根目录路径当成了某个文件路径的子元素,这显然不符合逻辑,所以抛出了这个异常。
解决方案:替换根引用的获取方式
你不需要调用root()来获取根目录引用,直接使用不带路径的reference()方法,或者显式指定根路径字符串即可:
修改后的代码示例
// 方式1:直接获取根引用(推荐) let storageReference = Storage.storage().reference() // 方式2:显式指定根路径字符串 // let storageReference = Storage.storage().reference(withPath: "/") // 执行listAll操作 storageReference.listAll { (result, error) in if let error = error { print(error.localizedDescription) } else { // 遍历根目录下的项目 for item in result.items { print(item.name) } } }
为什么这个方法有效?
root()方法返回的引用在SDK内部的路径标识上,和直接调用reference()得到的根引用存在细微差异,导致listAll执行时的层级校验逻辑触发了错误判断。而直接使用reference()或者显式指定"/"作为路径,SDK会正确识别这是根目录,从而正常执行列表检索。
你可以测试一下,修改后根目录的listAll应该能正常返回结果,子目录的列表操作也不会受到任何影响。
内容的提问来源于stack exchange,提问作者user5669940
相关产品推荐
相关产品推荐

