【问题标题】:storageRef.downloadURL isn't executing code insidestorageRef.downloadURL 没有在里面执行代码
【发布时间】:2019-04-22 12:04:36
【问题描述】:
func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let storageRef = Storage.storage().reference().child("user/\(uid)")

    let imageData = image.jpegData(compressionQuality: 0.75)

    let metaData = StorageMetadata()
    metaData.contentType = "image/jpg"

    storageRef.putData(imageData!, metadata: metaData)
    //Get url
    let imageRef = storageRef
    imageRef.downloadURL { url, error in
        if let error = error {
            print(error.localizedDescription)
        }else{
            print(url.absoluteString)
        }
    }

}

里面的代码不会执行,它会跳过一切,就像没有存储代码一样。我不确定完成是如何工作的,但我想它会打印错误或打印 url,但它都不会。当我在这里设置断点时,它甚至不会检查是否错误 = 错误。是我做错了什么还是其他人有同样的问题?

imageRef.downloadURL { url, error in
    if let error = error {
        print(error.localizedDescription)
    }else{
        print(url.absoluteString)
    }
}

【问题讨论】:

标签: swift xcode firebase firebase-realtime-database firebase-storage


【解决方案1】:

您的 API 调用是异步的,因此您为什么需要而不是打印实际上使用完成块来返回结果(错误或值)。

【讨论】:

  • 我该怎么做?对不起,我是新手
【解决方案2】:

您的 putData:metadata:completion: 没有完成块。您可以在上传后访问下载 URL,因此 putData 应如下所示。

storageRef.putData(imageData!, metadata: metaData) { (metadata, error) in
            guard let metadata = metadata else {
                // an error occurred!
                return
            }
            // Metadata contains file metadata such as size, content-type.
            let size = metadata.size

            // You can only access to download URL after upload.
            let imageRef = storageRef

            imageRef.downloadURL { (url, error) in
                guard let downloadURL = url else {
                    // an error occurred!
                    return
                }
            }
        }

【讨论】:

  • 我试过这样做,但它会跳过这个完成块内的所有代码
  • @Cristian API 调用是异步的,因此您需要在完成块内设置断点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 2019-06-12
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多