2016-03-24 24 views
1

我很好奇爲什麼需要在下面的代碼中解開隱式解包可選,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 
      } 
     } 
} 

爲什麼它被認爲是等號後的可選字符串,但不是之前?

回答

3

UILabel display是一個隱式解包的可選項,而不是它的屬性text:該屬性是一個正常的可選項。

所以,雖然你不必手動解開display,但你必須爲display.text做。

-1

展開optional type變量是使用得到變量這個值的內容(也可以是零)

看看定義的UILabel的:

public class UILabel : UIView, NSCoding { 

    public var text: String? // default is nil 
    ... 
} 

text屬性是optional type。所以當獲得(訪問)這個值時,你需要解開它。在你的代碼中使用! force-unwraptext財產display標籤。

而且,如果您將值分配給某個未打包的元素,只需將其分配爲普通變量即可。