我很困惑为什么 label.text = textField.text
行可以工作,即使 textField.text
是可选的。通常我会把它写成:
if let text2 = textField.text {
label.text = text2
}
上面的代码工作正常,但为什么 label.text = textField.text
也工作正常?我认为解包选项是必须的?什么时候必须使用 if let
语法,什么时候不需要?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
label.text = ""
}
@IBAction func setTextButtonTapped(_ sender: Any) {
label.text = textField.text
}
@IBAction func clearTextButtonTapped(_ sender: Any) {
textField.text = ""
label.text = ""
}
}
最佳答案
UILabel text
是可选的 String
。
UITextField 文本
是可选的 String
。
可选的可以接受可选的或非可选的。
一个非可选的只能接受一个非可选的。
只有在需要非可选时才需要解包可选。
关于ios - 我不必解包 Swift 可选的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45112931/