2016-03-24 17 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変数は、変数にこの値のコンテンツを取得するための使用である(それがnilすることができます)UILabelの定義で

ルック:

public class UILabel : UIView, NSCoding { 

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

textプロパティがoptional typeです。だから、この値を取得(アクセス)するときには、それをアンラップする必要があります。あなたのコードではあなたが使用します! 〜force-unwraptextプロパティdisplayラベル。

あなたがアンラップしないo ptional typに値を割り当てるときは、通常の変数として割り当てます。