Ошибка при развертывании необязательного значения после тестирования в 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!
Другие вопросы по тегам