可選項的型別
Optionals 是一個通用列舉型別,充當包裝器。此包裝器允許變數具有兩種狀態之一:使用者定義型別的值或 nil
,表示缺少值。
這種能力在 Swift 中尤其重要,因為該語言的一個明確的設計目標是與 Apple 的框架配合良好。Apple 的許多(大多數)框架都使用 nil
,因為它易於使用,並且對 Objective-C 中的程式設計模式和 API 設計具有重要意義。
在 Swift 中,對於具有 nil
值的變數,它必須是可選的。可以通過將 !
或 ?
附加到變數型別來建立可選項。例如,要使 Int
可選,你可以使用
var numberOne: Int! = nil
var numberTwo: Int? = nil
必須明確展開 ?
選項,如果你不確定該變數在訪問時是否具有值,則應使用該選項。例如,當將字串轉換為 Int
時,結果是可選的 Int?
,因為如果字串不是有效數字,則返回 nil
let str1 = "42"
let num1: Int? = Int(str1) // 42
let str2 = "Hello, World!"
let num2: Int? = Int(str2) // nil
!
選項會自動解包,只有在你確定變數在訪問時才具有值時才能使用。例如,在 viewDidLoad()
中初始化的全域性 UIButton!
變數
//myButton will not be accessed until viewDidLoad is called,
//so a ! optional can be used here
var myButton: UIButton!
override func viewDidLoad(){
self.myButton = UIButton(frame: self.view.frame)
self.myButton.backgroundColor = UIColor.redColor()
self.view.addSubview(self.myButton)
}