【问题标题】:No recognition of StorageMetadata // Value of type 'StorageMetadata' has no member 'downloadURL'无法识别 StorageMetadata //“StorageMetadata”类型的值没有成员“downloadURL”
【发布时间】:2018-05-14 14:22:01
【问题描述】:

更新我的 Firebase 项目后,我收到错误消息“StorageMetadata”类型的值没有成员“downloadURL”。在过去的几天里,我没有更改任何代码,并且随机它不再工作了。 相同的错误出现在 3 个不同的位置:

1:

// Referencing Firebase storage child with the unique identifier, and updating with the image from the picker
        DatabaseManager.shared.REF_POSTS_IMAGES.child(imgUid).putData(imgData, metadata: metaData, completion: { (metadata, error) in
            if error != nil {
                print("Unable to upload image Firebase storage")
            } else {
                print("Successfully uploaded image to Firebase storage")
                let downloadUrl = metadata?.downloadURL()?.absoluteString
                if let url = downloadUrl {
                    //once the image is uploaded to firebase stoarge, its then posted to the database
                    self.postToFirebase(imgUrl: url)
                }
            }
        })

2:

func uploadImages(_ data:Data,userid:String){

    let metadata = StorageMetadata()
    metadata.contentType = "image/jpeg"

    let imagesRef = Storage.storage().reference().child("photoPosts")
    let childs = imagesRef.child(userid)
    var imgUrl = NSURL()

    childs.putData(data, metadata: metadata) { (metadata, error) in
        imgUrl = (metadata?.downloadURL())! as NSURL

        self.updateURL(userid: userid, user_URL: imgUrl)
    }
}

3:

func save() {
    let newPostRef = Database.database().reference().child("posts").childByAutoId()
    let newPostKey = newPostRef.key

    // 1. save image
    if let imageData = UIImageJPEGRepresentation(image, 0.5) {
        let storage = Storage.storage().reference().child("images/\(newPostKey)")

        storage.putData(imageData).observe(.success, handler: { (snapshot) in
            self.downloadURL = snapshot.metadata?.downloadURL()?.absoluteString
            let postDictionary = [
                "imageDownloadURL" : self.downloadURL,
                "caption" : self.caption
            ]
            newPostRef.setValue(postDictionary)
        })
    }
}

其他帖子的答案对我没有帮助

【问题讨论】:

标签: swift firebase metadata


【解决方案1】:

随着 swift 5.0 的变化,元数据不再有 downloadURL 的方法。

相反,您必须按照以下方式做一些事情:

let storageRef = Storage.storage().reference().child("profile_images").child(fileName)
    storageRef.downloadURL(completion: { (url, error) in
    if error != nil {
        print("Failed to download url:", error!)
        return
    } else {
       //Do something with url
      }

  })
})

希望这会有所帮助。您还可以查看:this 答案、this 答案、this 答案或查看文档here

【讨论】:

  • 我想你还有一组闭幕式})
【解决方案2】:

我通过上传视频完成了同样的任务,如下所示: 希望对你有帮助:

 let storageRef = Storage.storage().reference().child("Videos").child("name")
            if let uploadData = self.finalCompressedData as Data? {
                storageRef.putData(self.finalCompressedData, metadata: nil
                    , completion: { (metadata, error) in
                        if let error = error {
                            //                            failure(error)
                        }else{
                            storageRef.downloadURL { (url, error) in
                                guard let downloadURL = url else {
                                    // An error occurred!
                                    return
                                }
                                print(downloadURL)
                            }

                        }
                })
            }

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    相关资源
    最近更新 更多