在swift和firebase中,'StorageMetadata'类型的值没有成员'downloadURL'。

问题描述 投票:0回答:1

我目前正在看一个youtube视频,告诉我如何制作一个社交媒体应用。但是当我在写代码的时候,我在这个函数中遇到了一个错误。这是一个非常恼人的错误,如果可以的话,请帮帮我吧。

func setupUser(userUid: String) {
    if let imageData = self.userImgView.image!.jpegData(compressionQuality: 0.2) {
        let imgUid = NSUUID().uuidString
        let metaData = StorageMetadata()
        Storage.storage().reference().child(imgUid).putData(imageData, metadata: metaData) { (metadata, error) in

            let downloadURL = metadata?.downloadURL()?.absoluteString

            let userData = [
                "username": self.usernameField.text!,
                "userImg": downloadURL!
                ] as [String : Any]

            Database.database().reference().child("users").child(userUid).setValue(userData)
            self.performSegue(withIdentifier: "toFeed", sender: nil)
        }
    }
}

错误发生在这段代码中...

 let downloadURL = metadata?.downloadURL()?.absoluteString

在Stackoverflow上还有其他类似的问题,但我都试过了,但得到了一个错误。你能不能帮帮我。你能不能稍微编辑一下我的代码来修复它?请不要直接引导我去看文档。我已经试过了,但是没有用。

ios swift firebase firebase-storage
1个回答
0
投票

你可以用这个函数来上传firebase存储中的内容。

typealias blockCompletedWith = (Bool, String) -> Void 

func uploadToFirebaseStorage(data: Data, path: String, blockCompletedWith: @escaping blockCompletedWith) {
    let metadata = StorageMetadata()
    metadata.contentType = "image/jpeg" //Modify as per your need

    let store = Storage.storage()
    let storeRef = store.reference().child(path)
    let _ = storeRef.putData(data, metadata: metadata) { (metadata, error) in
        guard let _ = metadata else {
            print("error occured: \(error.debugDescription)")
            blockCompletedWith(false, "")
            return
        }

        storeRef.downloadURL(completion: { (url, error) in
            if let urlText = url?.absoluteString {
                blockCompletedWith(true, urlText)
            }
            else {
                blockCompletedWith(false, "")
            }
        })
    }
}

从这个功能中得到URL后,你可以根据你的需要对数据做进一步的处理。

如果你有任何问题,请告诉我。

乐于助人!


-1
投票

正确的做法是对podfile进行降级。在你的podfile中,输入

pod 'Firebase/Storage', '4.4.0'

那就可以用了。你不必降级其他podfiles。

© www.soinside.com 2019 - 2024. All rights reserved.