我很好奇为什么需要在下面的代码中展开隐式展开的可选 display.text 。 (来自斯坦福CS193p)
@IBOutlet weak var display: UILabel!
@IBAction func appendDigit(sender: UIButton) {
if let digit = sender.currentTitle {
if userIsTypingNumber {
display.text = display.text! + digit
} else {
display.text = digit
}
}
}
为什么它在等号后被认为是可选字符串,而不是之前?
答案 0 :(得分:3)
UILabel display
是一个隐式解包的可选项,而不是其属性text
:该属性是普通的可选项。
因此,虽然您不必手动解开display
,但您必须为display.text
执行此操作。
答案 1 :(得分:-1)
展开optional type
变量用于在变量中获取此值内容(可以为零)
看看UILabel的定义:
public class UILabel : UIView, NSCoding {
public var text: String? // default is nil
...
}
text
属性为optional type
。因此,当获取(访问)此值时,您需要打开它。在您的代码中使用!来自force-unwrap
标签的text
display
财产。
当你为一个o ptional typ
e指定值而不是打开时,只需指定为正常变量。