首页 > 解决方案 > Swift 4 Firebase 存储元数据

问题描述

谁能帮我解决这个问题。所以我在 Swift 4 上有一个使用元数据的 Firebase 存储代码

这是代码:

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)
                })

我有错误:
if let profileImageUrl = metadata?.downloadURL()?.absoluteString

错误 :

'StorageMetadata?' 类型的值 没有成员“downloadURL”

这是我的代码的截图 点击这里

有解决办法吗,还是谢谢

标签: iosxcodefirebaseswift4firebase-storage

解决方案


从错误中,它说元数据没有成员 downloadURL。因此,它已从 Firebase 上的 StorageMetadata 中删除。你可以这样做。

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)
             }
            })

详细解释官方文档中

尝试并分享结果。


推荐阅读