在OC,一個class類型的變量,其值既可爲一個有效的對象,亦可爲nil。但諸如Int,Double等類型則沒有nil值。好比,32位Int,超過最大值後,OC 會用NSNotFound處理,而不是nil值。Swift 比OC 更爲靈活,直接在語法層面支持全部類型佳能用nil值--可選型(Optional)swift
##如何使用xcode
使用可選型,Swift 提供了很是簡潔的方式,直接在類型後加‘?’,例如定義一個有可選型的整型變量:安全
var optionalInteger: Int?
運行Xcode playground 後,能夠看到以下效果: app
Swift 是強類型語言,因此,上述optionalInteger 在使用時,Swift 並不但願它是可選值,必須爲Int,所以,就須要解包--簡單地理解,就是轉換。解包的的操做,也很簡單,在變量後面加 ‘!’,好比:code
var normalInteger = optionalInteger! + 5orm
解包的前提是你肯定該變量必定不是nil,不然強制解包會不安全,Swfit 提供了另外一個很簡潔的語法來檢查解包前值是否爲nil值--即值綁定,再次使用optionalInteger爲例:對象
if let tempInteger = optionalInteger{ normalInteger = tempInteger + 5 }else { // nil ,do something }
注意,tempInter 賦值後,其值不是可選的,而是Int,因此不須要解包。get
本文,參考http://www.codingexplorer.com/swift-optionals-declaration-unwrapping-and-binding/it