将字符串设为可选,并设置为默认值(如果为零)

时间:2018-11-26 20:14:49

标签: ios swift optional

我在通知中收到一个对象,该对象的属性之一是代表文件名的字符串。如果字符串存在,我想显示一张图像。如果不存在,我想显示一个默认值。

以下代码显示图像,如果字符串存在:

 if let contact = notification.userInfo?["contact"] as? Contacts,
            let pic = contact.pic  {
             if let img = self.loadImageNamed(pic) {
//Display the image
}
}

但是,我正在努力寻找语法以检测丢失的字符串并显示默认图像。

在以下变体中,我尝试使用合并运算符但出现错误  图片不是可选的。

if let contact = notification.userInfo?["contact"] as? Contacts,
                let pic? = contact.pic ?? "default.pic"  {
                 if let img = self.loadImageNamed(pic) {
    //Display the image
}
} 

2 个答案:

答案 0 :(得分:1)

几乎pic是非可选的,它不能在可选的绑定表达式中

if let contact = notification.userInfo?["contact"] as? Contacts {
   let pic = contact.pic ?? "default.pic"  
   if let img = self.loadImageNamed(pic) {
       //Display the image
   }
}

答案 1 :(得分:1)

另一种可能性是使用可选链接

let pic = (notification.userInfo?["contact"] as? Contacts)?.pic
let img = self.loadImageNamed(pic ?? "default.pic") 

或者,如果pic可以为空字符串:

let pic = (notification.userInfo?["contact"] as? Contacts)?.pic ?? ""
let img = self.loadImageNamed(!pic.isEmpty ? pic : "default.pic")