Ошибка при развертывании необязательного значения после тестирования в Swift
У меня странная ошибка этим утром при запуске моего кода.
фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения
Вот мой простой объект:
class FQ {
var rating: Float?
var phone: String?
init(rating: Float?, phone: String?)
{
self.rating = rating
self.phone = phone
}
}
Но я проверяю нулевое значение в моем операторе if (FQ.match() -> FQ?
):
let fq: FQ? = FQ.match(self.place!.name, location: self.place!.location)
if fq != nil && fq!.phone != nil {
self.phone.text = fq!.phone
} else {
self.phone.text = ""
}
Но отладка это:
Печатное описание fq: (project.FQ?) Fq = Some {
рейтинг = 6.0999999
телефон = "+33 1 53 10 87 19"
}
Значение не ноль. Отладчик не работает при установке значения метки с номером телефона.
Я думал, что понял Дополнительный, но похоже, что я не понял. Что мне не хватает?
3 ответа
Это было вводящее в заблуждение сообщение об ошибке.
Моя точка зрения была объявлена правильно, на мой взгляд, но каким-то образом связь между пользовательским интерфейсом и контроллером исчезла. Я думаю, что это произошло после слияния в Git.
Мне просто нужно было привязать ярлык к представлению, выбирающему переменную телефонной розетки, и теперь все работает нормально.
Спасибо, ребята, Максим
Если вы говорите, что fq
не ноль, то есть только одно место, где может быть сгенерировано исключение:
self.phone.text = fq!.phone
Является self.phone
UILabel
(или похожие)? Если да, я предполагаю, что это неявно развернуто
@IBOutlet var phone: UILabel!
Вы уверены, что это не ноль?
Похоже, что fq.phone
также является необязательным, поэтому вы не можете назначить его self.phone.text
(Я полагаю, не является обязательным), не разворачивая его в первую очередь. Пытаться:
self.phone.text = fq!.phone!