Ios 在Swift中测试可选值后,展开该值时出错

Ios 在Swift中测试可选值后,展开该值时出错,ios,swift,optional-values,Ios,Swift,Optional Values,今天早上我运行代码时出现了一个奇怪的错误 致命错误:在展开可选值时意外发现nil 这是我的简单目标: class FQ { var rating: Float? var phone: String? init(rating: Float?, phone: String?) { self.rating = rating self.phone = phone } } 但是我正在测试if语句中的nil值(FQ.match()

今天早上我运行代码时出现了一个奇怪的错误

致命错误:在展开可选值时意外发现nil

这是我的简单目标:

class FQ {

    var rating: Float?
    var phone: String?

    init(rating: Float?, phone: String?)
    {
        self.rating = rating
        self.phone = phone
    }
}
但是我正在测试if语句中的nil值(
FQ.match()->FQ?
):

但是调试它:

打印fq说明:(project.fq?)fq=Some{
评级=6.099999
phone=“+33 1 53 10 87 19”
}

该值不是零。 使用电话号码设置标签值时,调试器失败


我以为我懂,但看起来我不懂。我遗漏了什么?

似乎
fq.phone
也是可选的,因此如果不先将其展开,就无法将其分配给
self.phone.text
(我假设不是可选的)。尝试:

self.phone.text = fq!.phone!

似乎
fq.phone
也是可选的,因此如果不先将其展开,就无法将其分配给
self.phone.text
(我假设不是可选的)。尝试:

self.phone.text = fq!.phone!

如果您说
fq
不是nil,那么只有一个地方可以生成异常:

self.phone.text = fq!.phone
self.phone
UILabel
(或类似产品)吗?如果是,我想这是一个隐式的未包装的

@IBOutlet var phone: UILabel!

你确定它不是nil吗?

如果你说
fq
不是nil,那么只有一个地方可以生成异常:

self.phone.text = fq!.phone
self.phone
UILabel
(或类似产品)吗?如果是,我想这是一个隐式的未包装的

@IBOutlet var phone: UILabel!

您确定它不是零吗?

这是一条误导性的错误消息

我的outlet在我的视图中声明正确,但不知何故UI和控制器之间的链接消失了。我想这是在Git合并之后发生的

我只需将标签链接回选择我的phone outlet变量的视图,现在一切正常

谢谢各位,
Maxime

这是一条误导性错误消息

我的outlet在我的视图中声明正确,但不知何故UI和控制器之间的链接消失了。我想这是在Git合并之后发生的

我只需将标签链接回选择我的phone outlet变量的视图,现在一切正常

谢谢各位,
Maxime

我以为他们最终转换了Objc API中所有隐式未包装的内容?但如果不是最新版本的Swift,这可能就是答案。我发现了这个问题。我的UIlabel声明得很好,但我想在合并过程中出口链接消失了。我不得不将我的标签链接到我的控制器上,现在它工作正常。错误消息有点混乱和误导。@AlvinThompson:自定义视图控制器、视图等中的UI组件总是(隐式地展开)选项,因为它们不是在实例化时创建的,我认为这不会改变。@maxwell2022:一般来说,编译消息通常是晦涩和误导性的——但在本例中,很明显,未包装的可选值为零。一个丢失的出口链接可能是原因。@Antonio:我明白了!我还没走那么远。我以为他们最终转换了Objc API中所有隐式未包装的东西?但如果不是最新版本的Swift,这可能就是答案。我发现了这个问题。我的UIlabel声明得很好,但我想在合并过程中出口链接消失了。我不得不将我的标签链接到我的控制器上,现在它工作正常。错误消息有点混乱和误导。@AlvinThompson:自定义视图控制器、视图等中的UI组件总是(隐式地展开)选项,因为它们不是在实例化时创建的,我认为这不会改变。@maxwell2022:一般来说,编译消息通常是晦涩和误导性的——但在本例中,很明显,未包装的可选值为零。一个丢失的出口链接可能是原因。@Antonio:我明白了!我还没走那么远。