为什么UIAlert导致我的其他变量之一为零?

时间:2017-05-16 16:04:13

标签: ios swift null uilabel uialertcontroller

我试图让UIAlert弹出,但每当代码调用应该执行此操作的函数时,过程中完全不相关的值会导致错误,表示当它预期有值时返回nil 。我解决了这个问题,但我不知道为什么我的解决方案有效。

原文:

var fullFreqHeard: [Double] = []

@IBOutlet weak var fullFreqLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    fullFreqLabel.text = "\(fullFreqHeard)"
}

解决方案:

var fullFreqHeard: [Double] = []

@IBOutlet weak var fullFreqLabel: UILabel?

override func viewDidLoad() {
    super.viewDidLoad()
    fullFreqLabel?.text = "\(fullFreqHeard)"
}

不同之处在于原始的I力打开了标签,而在解决方案中我使用了'?'。这里发生了什么?我也想知道它是否与警报有任何关系。

1 个答案:

答案 0 :(得分:0)

我不认为它与警报有任何关系。强制解包修复错误的原因是因为fullFreqLabel最初为零。您必须在设置它的值之前初始化它。例如,var fullFreqLabel = UILabel(frame: CGRect.zero)