天天看點

Swift新手教程12-可選鍊

可選鍊提供一個一種可選的方式訪問對象的屬性、方法、下标腳本,可選鍊的傳回值一定是可選類型。

長處:替代強制解析(符号!,比如instance.location!.y),由于強制解析nil的值會導緻執行期錯誤我的心得:對一個鍊式調用,比方instance.Frame.Origin.x等非常長的調用,對可能是nil的部分加上?

比如,frame和Origin可能為nil。則這麼使用instance.Frame?.origin?.x

可選鍊的特點:中間有一次可選的值為nil,那麼整個可選鍊失效。傳回nil

舉個簡單的樣例就明确了

}

class B{

var varB:C?

var varBArray = [D]()

subscript(index:Int)->D?{

if(index < varBArray.count){

return varBArray[index]

else{

return nil

class C{

var varC:String = "from C"

func printC(){

println(varC)

class D{

var varD1:Int = 10

var varD2:E = E()

class E{

func printE(){

println("from E")

var instance = A()

一、通過可選鍊調用屬性

備注:因為傳回可選類型,要用if let這種句式隐式解析

二、通過可選鍊調用方法

三、通過可選鍊調用下标腳本

[5]?.varD1{ println(temp)

這裡解釋下為什麼這麼用

instance.varA?[5]是用可選鍊訪問下标腳本。傳回D?,然後對傳回的D?再通過可選鍊訪問,搜易訪問的時候是 instance.varA?[5]?.varD1

四、長的可選鍊調用