今天早上运行我的代码时出现了一个奇怪的错误。
致命错误:在解包可选值时意外发现nil
这是我的简单对象:
class FQ {
var rating: Float?
var phone: String?
init(rating: Float?, phone: String?)
{
self.rating = rating
self.phone = phone
}
}
但我正在if语句(FQ.match() -> FQ?
)中测试nil值:
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 =有些{
评级= 6.0999999
phone =“+33 1 53 10 87 19”
}
价值不是零。 使用电话号码设置标签值时,调试器失败。
我以为我理解了Optional,但看起来我没有。我错过了什么?
答案 0 :(得分:3)
如果你说fq
不是零,那么只有一个地方可以生成例外:
self.phone.text = fq!.phone
self.phone
是UILabel
(或类似)吗?如果是的话,我认为它是一个隐含的未解决的
@IBOutlet var phone: UILabel!
你确定它不是零吗?
答案 1 :(得分:1)
这是一个误导性的错误消息。
我的视频在我的视图中被正确声明,但不知何故,UI和Controller之间的联系消失了。我认为它发生在Git合并之后。
我只需将标签链接回选择我的手机插座变量的视图,现在一切正常。
谢谢你们, 马克西姆
答案 2 :(得分:0)
fq.phone
似乎也是可选的,因此您无法先将self.phone.text
分配给self.phone.text = fq!.phone!
(我假设不是可选的)。尝试:
{{1}}