它以空字符串开头,而不是nil。即使将其显式设置为nil,它仍然是一个空字符串。我不明白 也许通过分配nil使其易于清除?用它编写代码很麻烦。
var textField = UITextField() print(textField.text) // prints "Optional("")" textField.text = nil print(textField.text) // prints "Optional("")"
这是历史性的事情。UITextField空字符串和nil字符串之间没有任何区别。在Objective- C中,无需在两者之间进行区别,因为您可以nil在Objective-C中调用方法。
UITextField
nil
同样,在Objective-C中也无法阻止用户分配nil给属性。生成的合同text可以是可选的。在Objective-C中,这没有什么区别。
text
在Swift中,我们无能为力,因为UITextField.text必须更改合同,可能会破坏许多已经编写的代码。请注意,即使nil从未从该方法返回nil任何值,您仍然可以分配以重置该值。
UITextField.text
您可以在旧的API中找到数百种类似的情况。