强制展开(UITextField().text!)不是崩溃.但是(UILabel().text!)崩溃



请检查此项,我需要解释为什么texField.text!没有崩溃,label.text!崩溃

如我们所知,UITextField具有open var text:String?的性质,UILabel具有open var text:String?

let texField = UITextField() 
texField.text = nil   
print(texField.text!) // not crash 
let label = UILabel() 
label.text = nil 
print(label.text!) //crash 

来自UITextField的文档

声明

var text: String? { get set }

讨论

默认情况下,此字符串为@""


来自UILabel的文档

声明

var text: String? { get set }

讨论

默认情况下,此属性为nil

请注意的细微差异

根据经验,您永远不应该像这样强制打开可选值。您应该使用if-letguard或swift提供的任何方式来安全地处理期权。

如果标签没有文本,则label.text将返回nil。但是,如果文本字段没有文本,则textField将返回""(空字符串(。这就是为什么如果强制打开文本字段的text属性,它不会崩溃。

我不知道苹果为什么会这样设计,但正如我在上面所写的,你应该安全地处理选项。

相关内容

最新更新