天天看点

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

四、长的可选链调用