tsuyushiga's blog

備忘録です。

【Swift】Optional型 使用方法まとめ

Optional型の使用方法がいまいちわかっていなかったので整理しました。
(環境: xcode 6.2, Swift 1.1)

nil の代入可否
  • 非Optional型
var vN1 : UIView
vN1 = nil  //  エラー
  • Optional型
var vO1 : UIView?
vO1 = nil    //  OK
  • Implicitly Unwrapped Optional型
var vI1 : UIView!
vI1 = nil    //  OK
変数の参照
  • 非Optional型
var vN2 : UIView
vN2 = UIView()
vN2.frame // OK (非Optional型はnilじゃないことが保証されてる)
  • Optional型
var vO2 : UIView?
// nilじゃない場合
vO2 = UIView()
vO2?.frame // OK (Optional型を返す)
vO2!.frame // OK (非Optional型を返す(アンラップされて))
// nilの場合
vO2 = nil
vO2?.frame // OK
vO2!.frame // エラー
  • Implicitly Unwrapped Optional型
var vI2 : UIView!
// nilじゃない場合
vI2 = UIView()
vI2.frame // OK (非Optional型を返す)
vI2!.frame  // OK (非Optional型を返す。自動アンラップすると宣言してるが、手動でアンラップ...)
vI2?.frame // OK (Optional型を返す)
// nilの場合
vI2 = nil
vI2.frame // エラー
vI2!.frame // エラー
vI2?.frame // OK

以上です。