У меня есть модель, как показано ниже.
struc Info: Decodable {
var firstName: String?
var lastName: String?
}
При отображении в ячейке таблицы, я делаю, как показано ниже.
personName.text = "\(personArray[indexPath.row].firstName!) \(personArray[indexPath.row].lastName!)"
Теперь приложение падает, если у меня есть данныев формате ниже
[
{
"firstName" : "F 1",
"lastName" : "L 1"
},
{
"firstName" : "F 2"
},
{
"lastName" : "L 3"
}
]
Приложение аварийно завершает работу, говоря, что lastName равно nil
Решение 1
Решение для этой проверки для nil & затем показывает имя, однакоЯ не хочу делать проверку во время выполнения, потому что Я должен проверить это для всех переменных (учитывая, что у меня есть модель из 25 переменных) .Вот что я мог бы сделать:
var firstName = ""
if (personArray[indexPath.row].firstName == nil) {
firstName = ""
} else {
firstName = personArray[indexPath.row].firstName!
}
var lastName = ""
if (personArray[indexPath.row].lastName == nil) {
lastName = ""
} else {
lastName = personArray[indexPath.row].lastName!
}
personName.text = "\(firstName) \(lastName)"
Решение 2
Я могу выполнить обновление в самой модели, как показано ниже.
struc Info: Decodable {
var firstName: String?
var lastName: String?
var firstName2 : String? {
get {
if (self.firstName==nil) {
return ""
}
return firstName
}
var lastName2 : String? {
get {
if (self.lastName==nil) {
return ""
}
return lastName
}
}
personName.text = "\(personArray[indexPath.row].firstName2!) \(personArray[indexPath.row].lastName2!)"
Однако у меня проблемас этим тоже.Таким образом, снова, мне нужно снова создать N переменных.
Есть ли другой альтернативный способ, где будет назначено значение по умолчаниюесли эта переменная отсутствует в веб-сервисе?