Swift-可选类型和可选链
2017-01-10 17:17
120 查看
可选类型以及可选链
/* 可选链 - Optional Chaining */ import Foundation /* 1、深入研究可选类型 */ print("1、深入研究可选类型") //有值,没有值nil,可选类型有两种状态 var opa:Optional<Int> //Optional--enum类型 var opb:Int? //基本类型变量,必须在使用之前先进行初始化 //(初始化)安全!!!,因为不管在什么时候访问某个普通变量,都有意义 //普通变量只有一种状态:有值 var aa:Int = 2 print(opa) print(opb) print(aa) //可选类型是否安全--判空同时解包,这样使用很安全 if let xa = opa{ print(xa) } var data:NSData? = NSData(contentsOfFile: "etc/passwd") print(data) /* 2、可选链 */ print("\n2、可选链") class Person{ var name = "" func whoami() -> String{ print("My name is \(name)") return name } init(name:String) { self.name = name } } var p0:Person? var p1:Person = Person(name:"Tom") p1.name = "Sam" p1.whoami() //通过可选类型来调用相应的属性或者方法等 /*p0!.name = "Si" p0!.whoami() if let t:Person = p0{ t.name = "Wu" t.whoami() } if p0 != nil{ p0!.name = "Li" p0!.whoami() }*/ //可选链方式 p0?.name = "Liu" p0?.whoami() /* 3、可选链的返回值 */ print("\n3、可选链的返回值") p0 = p1 let t:String? = p0?.name let t1:String = p0!.name print(p0?.name) //可选值类型 print(p0!.name) print(p0?.whoami()) //可选值类型 /* 4、通过可选链调用下标索引 */ //可选值?.属性 //可选值?.方法 //调用下标方法:可选值?[参数] print("\n4、通过可选链调用下标索引") class MyStringHash { subscript(x:String) -> Int{ return x.hashValue - 1000 } } var sh = MyStringHash() var sho:MyStringHash? sho = sh print(sh["abc"]) print(sho?["abc"]) var arr:[Int]? = [1,2,3,4] print(arr?[1]) /* 5、可选链的赋值操作 */ print("\n5、可选链的赋值操作") p0 = p1 p0?.name = "liu" print(p1.name) //判断赋值操作是否成功 let res:Void? = (p0?.name = "Lisi") print(res) if (p0?.name = "Lisi") != nil{ print("成功") } /* 6、多层链接的可选链 单层链接:a?.属性 多层链接:d.c?.b.a?.tag */ print("\n6、多层链接的可选链") class A { var tag:String = "" } class B { var a:A? } class C { var b:B = B() } class D { var c:C? } var d = D() var c = C() var a = A() a.tag = "er" d.c = c d.c?.b.a = a print(d.c?.b.a?.tag)
相关文章推荐
- Swift 可选类型 ?和!
- Swift:(二)、元祖、可选类型、运算符、字符串和字符
- swift学习3 数据类型的可选值 optional type
- Swift基础语法10-- 可选类型
- iOS:swift :可选类型
- Swift语法10.可选类型
- Swift类型推测在可选调用中的小提示
- swift为可选类型添加扩展
- Swift入门(四)——可选类型(Optionals)与断言(Assert)
- Swift-可选类型
- [swift]-可选类型使用
- Swift 初学手册:可选类型 (Optionals)
- swift 可选类型详解 (optionals)
- 窥探Swift之新添数据类型元组与可选值
- 菜鸡的swift学习(1):Mac中语言设定,no such module Cocoa的,可选类型的声明
- 学校学习ios教程笔记,第二节Swift的常量,变量,可选类型控制流
- Swift之可选数据类型
- Swift类型推测在可选调用中的小提示
- Swift-可选类型(Optional)以及解包
- Swift---- 可选值类型(Optionals) 、 断言(Assertion) 、 集合 、 函数