Ver*_*con 30 uitextfield ios swift
它以空字符串而不是nil开头.即使它明确地设置为nil,它仍然是一个空字符串.我不明白.也许通过分配nil来轻松清除?用它编写代码很笨重.
var textField = UITextField()
print(textField.text) // prints "Optional("")"
textField.text = nil
print(textField.text) // prints "Optional("")"
Run Code Online (Sandbox Code Playgroud)
Sul*_*han 34
这是历史性的事情.UITextField空字符串和nil字符串之间没有任何区别.在Objective-C中,没有必要在它们之间产生差异,因为您可以nil在Objective-C中调用方法.
此外,Objective-C无法阻止用户分配nil属性.由此产生的合同text可以是可选的.在Objective-C中没有任何区别.
在Swift中,我们无能为力,因为UITextField.text合同必须改变,可能会破坏许多已编写的代码.请注意,即使nil从方法中永远不返回,您仍然可以指定nil重置该值.
您可以在旧API中找到数百种类似的情况.
mat*_*att 21
我对此感到非常强烈,我正在重复我对Sulthan的答案的评论作为另一种答案.
我不确定Sulthan的答案是否真的回答了这个问题.
我不能 "找到数百个类似的情况." 那是因为他们已经不在了.他们在Swift 1中,但那是很久以前的事了.从那以后,API经过手工调整以消除它们.这个没有消除.
手动调整API的整个想法是删除不必要的Optionals.理论上可以有数百个值,nil但实际上从来都不会,因此在Swift中它们不是选项.这个值永远不会是nil; 即使Objective-C代码设置它nil,它也不会成为nil.并且在Swift中使它成为nonOptional并不会"破坏"任何东西.所以在Swift中它是一个可选项是没有意义的.
因此,我认为正确的答案是它是一个错误.在手动调整过程中的IUO去除期间,在Swift 2.0的准备阶段,标签和文本字段text应该被描述为非可选字符串,而事实并非如此.
| 归档时间: |
|
| 查看次数: |
4504 次 |
| 最近记录: |