我遇到了 fatal error :在解包
时意外发现 nil。IBOutlet
的可选值
在我的自定义 View 中,我已将我的 socket 与 XIB
文件关联起来。我已经仔细检查过这一点。它是这样的:
@IBOutlet weak var label: UILabel! {
didSet {
label.textColor = .redColor()
}
}
我的 layoutSubviews
实现如下所示:
override func layoutSubviews() {
super.layoutSubviews()
label.preferredMaxLayoutWidth = label.frame.size.width
}
尽管事实上,必须在 UI 元素初始化后调用 layoutSubviews
方法,但我收到错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
此错误由以下行触发:
label.preferredMaxLayoutWidth = label.frame.size.width
为什么会这样呢?如何解决?
最佳答案
您应该使用:
label?.preferredMaxLayoutWidth = label.frame.size.width
在layoutSubviews的早期调用之前, socket 尚未设置,但在下一次调用中将会设置。使用可选链接,您可以避免显式可选展开。如果 label 为零,则自动跳过分配。
关于ios - 展开可选 IBOutlet 值时为 Nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397279/