首页 > 解决方案 > “StorageMetadata”类型的值在 swift 和 firebase 中没有成员“downloadURL”

问题描述

我目前正在观看一段 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 上还有其他类似的问题,但我尝试了所有这些问题,但出现了错误。你能帮我么。你能稍微编辑一下我的代码来修复它吗?请不要直接引导我查看文档。我试过了,但没有用

标签: iosswiftfirebasefirebase-storage

解决方案


您可以使用此功能在 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 后,您可以根据需要对数据进行进一步处理。

请让我知道,如果你有任何问题。

乐意效劳!


推荐阅读