在Swift中测试之后展开可选值时出现错误
今天早上我有一个奇怪的错误,运行我的代码。在Swift中测试之后展开可选值时出现错误
fatal error: unexpectedly found nil while unwrapping an Optional value
这里是我的简单对象:
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 = ""
}
但调试它:
Printing description of fq: (project.FQ?) fq = Some {
rating = 6.0999999
phone = "+33 1 53 10 87 19"
}
该值不是零。 使用电话号码设置标签值时,调试器失败。
我以为我理解可选,但它看起来像我没有。我错过了什么?
回答:
这是一个误导性的错误消息。
我认为我的插座是正确声明的,但不知何故UI和控制器之间的联系消失了。我认为这是在Git合并之后发生的。
我只是不得不将标签链接到视图选择我的电话插座变量,现在一切正常工作。
谢谢你们, 马克西姆
回答:
看来,fq.phone
也是可选的,所以你不能将它分配给self.phone.text
(我假设不是可选的),而不先打开它。尝试:
self.phone.text = fq!.phone!
回答:
如果说fq
不为零,则只能有一个地方可以生成异常:
self.phone.text = fq!.phone
是self.phone
一个UILabel
(或类似)?如果是的话,我认为这是一个隐含的解开
@IBOutlet var phone: UILabel!
你确定它不是零?
以上是 在Swift中测试之后展开可选值时出现错误 的全部内容, 来源链接: utcz.com/qa/257914.html