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



我正在尝试弹出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)"
}

不同之处在于,在原始版本中,我强制打开标签,而在解决方案中,我使用了"?"。这是怎么回事?我也想知道它是否与警报有关。

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

相关内容

  • 没有找到相关文章

最新更新