сделать строку необязательной и установить значение по умолчанию, если ноль в Swift - PullRequest
0 голосов
/ 26 ноября 2018

Я получаю объект в уведомлении, одним из свойств которого является строка, представляющая имя файла.Если строка существует, я хочу показать одно изображение.Если он не существует, я хочу показать значение по умолчанию.

Следующий код показывает изображение, если строка существует:

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

Я борюсь, однако, с синтаксисом для обнаружения пропавших без вестиstring и show image по умолчанию.

В следующем варианте я попытался использовать оператор coalesce, но получил ошибку, что pic не является обязательным.

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 голосов
/ 26 ноября 2018

Другая возможность - использовать необязательную цепочку

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") 
0 голосов
/ 26 ноября 2018

Почти pic не является обязательным, оно не может быть в необязательном выражении привязки

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