我在通知中收到一个对象,该对象的属性之一是代表文件名的字符串。如果字符串存在,我想显示一张图像。如果不存在,我想显示一个默认值。
以下代码显示图像,如果字符串存在:
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
}
}
答案 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")