我尝试将图像下载到Firebase,但收到错误消息“用于条件绑定的Initializer必须具有可选类型,而不是'String“

时间:2019-09-22 12:39:02

标签: swift firebase firebase-storage

我尝试在Youtube上观看视频,然后尝试下载图像并进行显示,但我在一条我不知道的行中出现错误。

var pet: Pet! {
        didSet{

            ImgPhotoPet.image = UIImage(named: "Drako")
            viewContenido.frame.size.height = 140.0
            ImgPhotoPet.frame.size.width = (viewContenido.frame.size.width * 0.32) / 100
            //ImgBackgroundPet.frame.size.width = (viewContenido.frame.size.width * 0.68) / 100
            CardInfo.layer.cornerRadius = 10.0
            ImgPhotoPet.layer.cornerRadius = 15.0
            ImgPhotoPet.layer.masksToBounds = true
            LblNamePet.text = pet.namePet
            LblAgePet.text = pet.birthDay


在这一行中,我出现此错误“条件绑定的初始化程序必须具有可选类型,而不是'String'”

if  let imageDownloadURL = pet.URLImagePet { 

            let imageStorageRef = Storage.storage().reference(forURL: imageDownloadURL)

            imageStorageRef.getData(maxSize: 2 * 1024 * 1024, completion: { [weak self] (data, error) in
                if let error = error {
                    print("Error \(error)")
                } else {
                   if let imageData = data{
                        DispatchQueue.main.sync {
                            let image = UIImage(data: imageData)
                            self?.ImgPhotoPet.image = image
                        }
                    }
                }
            })
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您的变量pet.URLImagePet是非可选的,因此if let是多余的。您只需要let

这将纠正语法错误。

let imageDownloadURL = pet.URLImagePet
let imageStorageRef = Storage.storage().reference(forURL: imageDownloadURL)
etc...

不相关的样式点:尝试对变量使用小写驼峰命名。 urlImagePetURLImagePet。大写使名称看起来像类名称,而不是类的实例。