我最近一直在Swift中使用Firebase Cloud Storage,遇到了一个场景,我想检索存储在存储桶中的“文件夹”(其中包含其他子文件夹)中的图像(并且仅检索图像)。换句话说,我想使用递归来访问嵌套在许多文件夹中的文件。
我已经看到过这样的示例,但当然,这是通过使用Swift的FileManager
,因此我将无法在Firebase Cloud Storage上使用相同的功能。
另外,请记住,我不想有一个硬编码的引用路径,例如store.引用(). child("硬编码路径")
这是我到目前为止在不使用递归的情况下所拥有的:
class FIRQueries {
var storage: Storage
var storageRef: StorageReference
init() {
storage = Storage.storage()
storageRef = storage.reference()
}
func listFilesInCloud(completion: @escaping(Result<StorageListResult, Error>) -> ()) {
self.storageRef.root().listAll { result, error in
if let error = error {
completion(.failure(error))
print(error.localizedDescription)
return
} else {
completion(.success(result))
for prefix in result.prefixes {
completion(.success(prefix.fullPath))
}
for item in result.items {
print(item)
}
}
}
}
并在SwiftUI. on出现
块中接收结果
.onAppear {
FIRQueries().listFilesInCloud { value in
switch value {
case .failure(let error):
print(error)
case .success(let result):
for prefix in result.prefixes {
print(prefix.fullPath)
}
}
}
}
Soo…有什么方法可以实现这一点吗?有了这段代码,我只设法获得了桶根目录下“文件夹”的名称。我知道我可以在self. storageRef.root()
之后设置一个子
并给它一个路径,但这将是一个硬编码的路径。
感谢任何帮助!谢谢!