• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Swift新手教程12-可选链

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

可选链

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

http://blog.csdn.net/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()


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
iOSSwift实现图片点击缩放回弹动画发布时间:2022-07-14
下一篇:
[Swift]LeetCode1200.最小绝对差|MinimumAbsoluteDifference发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap