Ios Firebase存储警告:下载URL()';已弃用:使用`StorageReference.downloadURLWithCompletion()

Ios Firebase存储警告:下载URL()';已弃用:使用`StorageReference.downloadURLWithCompletion(),ios,swift,firebase,firebase-storage,Ios,Swift,Firebase,Firebase Storage,我刚刚将我的项目更新为Firebase Storage的最新版本,现在收到一条警告: downloadURL()已弃用:使用StorageReference.downloadURLWithCompletion()获取当前下载URL 我查看了Firebase image upload文档,但它仍然引用了downloadURL(),现在该文档已贬值。在下面的代码中,我以字符串形式获取图像的下载URL。代码可以工作,但现在需要更新,因为downloadURL()已折旧 uploadProfilePic

我刚刚将我的项目更新为Firebase Storage的最新版本,现在收到一条警告: downloadURL()已弃用:使用StorageReference.downloadURLWithCompletion()获取当前下载URL

我查看了Firebase image upload文档,但它仍然引用了
downloadURL()
,现在该文档已贬值。在下面的代码中,我以字符串形式获取图像的下载URL。代码可以工作,但现在需要更新,因为
downloadURL()
已折旧

uploadProfilePicTask.observe(.success) { snapshot in

  guard let profilePicStringURL = snapshot.metadata?.downloadURL()?.absoluteString else { return }
  ...
这是我的最新尝试。我使用新的
downloadURLWithCompletion()
尝试了下面的代码,但是
snapshot.metadata?.storageReference?
中的某些内容返回了nil,因此我无法检索url字符串。有人知道如何正确地使用下面新的
downloadURLWithCompletion()

uploadProfilePicTask.observe(.success) { snapshot in
  snapshot.metadata?.storageReference?.downloadURL { URL, error in
    if let urlString = URL?.absoluteString {
      // Do something
    } else {
      return
    }
  }

基本上不使用元数据,而是在事件成功后获取url。因为它是成功的,而且你知道它就在那里,你可以下载URL。在他们的网站中有“生成下载URL”的功能。下面,我假设您的StorageReference是uploadProfilePicTask

uploadProfilePicTask.downloadURL(completion: { (url, error) in
                    if (error == nil) {
                        if let downloadUrl = url {
                           // Make you download string
                           let downloadString = downloadUrl.absoluteString
                        }
                    } else {
                   // Do something if error
                    }
           })

我也有同样的问题,但我用以下代码修复了它:

    uploadTask.observe(.success) { snapshot in
        guard let imageURL = snapshot.metadata?.storageReference?.downloadURL(completion: { (url, error) in if error != nil {
            print(error as Any)
        } else {                      //add all you want

            }
        }) else { return }
        let imageStr = String(describing: imageURL)
        DBService.manager.updatePhoto(profileImageUrl: imageStr)
        AuthService.manager.updatePhoto(urlString: imageStr)
    }

}

您是否尝试过设置断点并查看快照包含的内容?@Niamh是的。storageReference返回Nil,但我无法找出原因。请编辑您的答案,以包含对代码所做操作的一些解释。这里不鼓励只使用代码的答案,所以。