试图获取存储参考的下载URL以填充标签



我正在使用Xcode 10,并且此方法将在应用程序中选择的照片上传到Firebase存储。它正在成功上传照片,但是,我试图将下载URL获取并在同一屏幕上填充标签。

我尝试了元数据。downloadurl,但这引发了一个错误元数据,不再识别xcode 10中的downloadurl。

这是我的功能...

   func uploadPhoto(completion: @escaping (_ url: String?) -> Void) {
    let photoName = NSUUID().uuidString
    let storageRef = Storage.storage().reference().child("photoURL").child("(photoName).jpg")
    let photo = self.photoImageView.image!
    if let uploadData = photo.jpegData(compressionQuality: 0.75) {
        storageRef.putData(uploadData, metadata: nil) { (metadata, error) in
            guard metadata != nil else {
                // Uh-oh, an error occurred!
                return
            }
            // Metadata contains file metadata such as size, content-type.
            //let size = metadata?.size
            // You can also access to download URL after upload.
            storageRef.downloadURL { (url, error) in
                guard url != nil else {
                    // Uh-oh, an error occurred!
                    return
                }
                // Metadata contains file metadata such as size, content-type, and download URL.
                // THROWS ERROR
                // let downloadURL = metadata.downloadURL
                // MY ATTEMPT
                var downloadURL = StorageReference.downloadURL(self.refStorage)
               completion(downloadURL = self.urlLabel.text) 
            }
        }
    }
}

您需要

storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in
    if(error != nil){
        print(error)
        return
    }
    storageRef.downloadURL { url, error in
        if let error = error {
            // Handle any errors
            if(error != nil){
                print(error) 
            }
        } else {
            // Get the download URL for 'images/stars.jpg'
            let urlStr:String = (url?.absoluteString) ?? ""
            print(urlStr)
        }
    }
})

最新更新