【发布时间】:2023-04-07 16:44:01
【问题描述】:
public func downloadAllURL (for path: String, completion: @escaping (Result<[URL], Error>) -> Void) {
let reference = storage.child(path)
var urlArray: [URL] = []
reference.listAll(complition: { datas, error in
if error != nil {
completion(.failure(StorageErrors.failedToGetDownloadUrl))
return
}
for storageRef in datas.items {
storageRef.downloadURL{ url, error in
if error != nil{
completion(.failure(StorageErrors.failedToGetDownloadUrl))
return
}
if let url = url{
urlArray.append(url)
print(url)
}
}
}
})
print(urlArray.count)
completion(.success(urlArray))
}
print(urlArray.count) 总是返回 "0" 但 append 方法正在工作并且print(url) 工作正常。
问题是我的downloadAllURL 函数先打印“0”,然后再打印“urls”。
【问题讨论】:
-
listAll 和 downloadURL 都是异步的,并且在调用回调之前立即返回。
-
如何让它们同步
标签: arrays swift firebase firebase-storage