在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

回到顶部