如何在保存在firebase中的url之前删除可选单词?

J. *_*Hoe 1 ios firebase swift

目前我正在保存存储在firebase数据库中的图像的url.但是我在网址之前得到了可选字.如下所示.

"可选(HTTPS:URL.HERE)"

以下是保存发生的代码块:

if let imageData = UIImageJPEGRepresentation(image, 0.8) {
    let metadata = storageRef //.child("poop/")

    let uploadTask = metadata.putData(imageData, metadata: nil) { (metadata, error) in
        guard let metadata = metadata else {
            // Uh-oh, an error occurred!
            return
        }

        // You can also access to download URL after upload.
        storageRef.downloadURL { (url, error) in
            guard let downloadURL = url else {
                // Uh-oh, an error occurred!
                return
            }
            let imgURL = url

            //database integration
            let ref = Database.database().reference()
            let usersRef = ref.child("usersPosts")

            let uid = Auth.auth().currentUser?.uid
            let newUserRef = usersRef.child(uid!)
            //creates a child for email and password (i think we shud store password so we can tell sumone what it is inmediatly, maybe)
            newUserRef.setValue(["Image": "\(imgURL)"])
        }

    }

    // For progress
    uploadTask.observe(.progress, handler: { (snapshot) in
        guard let progress = snapshot.progress else {
            return
        }

        let percentage = (Float(progress.completedUnitCount) / Float(progress.totalUnitCount))
        progressBlock(Double(percentage))
    })

} else {
    completionBlock(nil, "Image could not be converted to Data.")
}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 5

你得到Optional...因为imgURL是可选的.并且imgURL是可选的,因为您指定了url它是可选的.

由于您已经urlguard语句中解包,因此只需使用downloadURL而不是创建imgURL.

去掉:

let imgURL = url
Run Code Online (Sandbox Code Playgroud)

而更换使用的imgURLdownloadURL它的正常展开版本urlguard.

newUserRef.setValue(["Image": "\(downloadURL)"])
Run Code Online (Sandbox Code Playgroud)