隐含未解包的期权

时间:2016-03-24 06:10:32

标签: ios swift optional

我很好奇为什么需要在下面的代码中展开隐式展开的可选 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
            }
        }
}

为什么它在等号后被认为是可选字符串,而不是之前?

2 个答案:

答案 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指定值而不是打开时,只需指定为正常变量。

相关问题