简体   繁体   English

Swift 4 Firebase存储元数据

[英]Swift 4 Firebase Storage Metadata

Can anyone help me in this problem . 谁能帮助我解决这个问题。 So I have a code for Firebase Storage using metadata, on Swift 4 所以我在Swift 4上有一个使用元数据的Firebase存储的代码

Here is the code : 这是代码:

let imageName = NSUUID().uuidString

let storageRef = Storage.storage().reference().child("profile_images").child("\(imageName).png")

            if let uploadData = UIImagePNGRepresentation(self.profileImageView.image!) {

                storageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in

                    if error != nil {
                        print(error)
                        return
                    }

                    if let profileImageUrl = metadata?.downloadURL()?.absoluteString {

                        let values = ["name": name, "email": email, "profileImageUrl": profileImageUrl]

                        self.registerUserIntoDatabaseWithUID(uid, values: values as [String : AnyObject])
                    }
                    print(metadata)
                })

and i have error in : 而且我有错误:
if let profileImageUrl = metadata?.downloadURL()?.absoluteString 如果让profileImageUrl =元数据?.downloadURL()?. absoluteString

the error : 错误 :

Value of type 'StorageMetadata?' “ StorageMetadata”类型的值? has no member 'downloadURL' 没有成员“ downloadURL”

This is the screenshot of my code click here 这是我的代码的截图, 请点击这里

Is there a solution , thanks anyway 有解决方案吗,还是谢谢

From the error, it says metadata has no member downloadURL. 从错误中可以看出,元数据没有成员downloadURL。 so, it is removed from the StorageMetadata on firebase. 因此,它已从Firebase的StorageMetadata中删除。 You can do it like this. 您可以这样做。

let imageName = NSUUID().uuidString

let storageRef = Storage.storage().reference().child("profile_images").child("\(imageName).png")

        if let uploadData = UIImagePNGRepresentation(self.profileImageView.image!) {

            storageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in

                if error != nil {
                    print(error)
                    return
                }

                storageRef.downloadURL { (url, error) in
                guard let downloadURL = url else {
                    print("an error occurred!")

                    return
                }

                let profileImageUrl = downloadURL.absoluteString
                    let values = ["name": name, "email": email, "profileImageUrl": profileImageUrl]

                    self.registerUserIntoDatabaseWithUID(uid, values: values as [String : AnyObject])

                print(metadata)
             }
            })

Detailed explanation is here at official doc 详细的解释是这里的官方文档

Try and share the results. 尝试并分享结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM