它开始时是一个空字符串,而不是nil.即使显式设置为nil,它仍然是一个空字符串.我不明白.也许是为了更容易地通过指定零来清除?用它编写代码很笨拙.
var textField = UITextField()
print(textField.text) // prints "Optional("")"
textField.text = nil
print(textField.text) // prints "Optional("")"
它开始时是一个空字符串,而不是nil.即使显式设置为nil,它仍然是一个空字符串.我不明白.也许是为了更容易地通过指定零来清除?用它编写代码很笨拙.
var textField = UITextField()
print(textField.text) // prints "Optional("")"
textField.text = nil
print(textField.text) // prints "Optional("")"
这是一个历史事件.UITextField
对空字符串和nil
字符串没有任何区别.在Objective-C中,没有必要对它们进行区分,因为您可以在Objective-C中调用nil
上的方法.
此外,Objective-C中也没有办法阻止用户将nil
分配给一个属性.
在Swift中,我们无能为力,因为UITextField.text
个合同将不得不更改,可能会 destruct 许多已经编写的代码.请注意,即使从未从该方法返回nil
,您仍然可以指定nil
来重置该值.
在旧的API中可以找到数百种类似的情况.