我正在迅速使用Firebase。 下面是我的代码,用于从图像选择器上载图像并存储图像的下载URL。 我的代码的重点是在上传图片后存储下载网址。 因此,我试图找到一种方法来等待上传过程完成才能继续。
_ = imageRef.putData(data, metadata: nil, completion: {(metadata,error) in
guard let metadata = metadata
else{
print(error)
return
}
})
imageRef.downloadURL { (URL, error) -> Void in
if (error != nil) {
// Handle any errors
} else {
// Get the download URL for 'images/stars.jpg'
let UrlString = URL?.absoluteString}
答案 0 :(得分:1)
这就是完成处理程序的用途。您已经将完成处理程序传递给putData,上传完成后将调用该处理程序。您应该检查错误对象以确保其成功完成。
This is documented, along with a code sample.您可以在示例中看到,只有在没有错误的情况下,下载URL才从完成处理程序内部获取。