Swift入门教程12-可选链

本文详细介绍了Swift中可选链的使用方法,包括通过可选链调用属性、方法及下标脚本等内容,并提供了具体实例帮助理解。

可选链

原创Blog,转载请注明出处
我的博客地址

http://blog.youkuaiyun.com/hello_hwc
可选链提供一个一种可选的方式访问对象的属性、方法、下标脚本,可选链的返回值一定是可选类型。
优点:替代强制解析(符号!,例如instance.location!.y),因为强制解析nil的值会导致运行期错误
我的心得:对一个链式调用,比如instance.Frame.Origin.x等很长的调用,对可能是nil的部分加上?

例如,frame和Origin可能为nil,则这么使用instance.Frame?.origin?.x

可选链的特点:中间有一次可选的值为nil,那么整个可选链失效,返回nil

举个简单的例子就明白了

class A{
	var varA:B?
}
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这样的句式隐式解析
if let temp = instance.varA?.varB?.varC{
	println(temp)
}

二、通过可选链调用方法
instance.varA?.varB?.printC()


三、通过可选链调用下标脚本
if let temp = instance.varA?[5]?.varD1{
	println(temp)
}

这里解释下为什么这么用

instance.varA?[5]是用可选链访问下标脚本,返回D?,然后对返回的D?再通过可选链访问,搜易访问的时候是 instance.varA?[5]?.varD1

四、长的可选链调用

instance.varA?[5]?.varD2.printE()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值