Swift学习记录 -- 10.可选类型的使用
2016-10-02 18:01
357 查看
可选类型是Swift学习中的一个难点 , OC中也没有解包的概念 , 并且其实咱们在运用OC编程中 , 很多的操作都是不安全的 ,然而在Swift中已经感受到了强类型语言的严谨性和安全性
//为什么要有可选类型 ? 因为在开发中,很多时候我们初始化一个变量,而并不会立即对其赋值 , 然而基本数据类型我们可以初始化 0 ,如果是其他类型比如字符串 , 我们没有办法对其直接赋值为nil // let name = nil 报错 // let name:String = nil 报错 let name:String name = "xiaoming" //此种写法虽然不报错 ,但是在定义类里,必须要有初始值 如下类 . 此时我们就用到了可选类型 //定义一个类,这里只是证明类里的属性必须做初始化 class Student: NSObject { // var name:String 报错 var name:String? = nil //可选类型初尝试 }
//1.定义可选类型 //可选类型写法1 :(不常用) var name1:Optional<String> = nil //可选类型写法2 :(常用,语法糖) var name2:String? = nil //2.给可选类型赋值 name2 = "my"
//3.取出可选类型值 print(name2) //注意:此处取出的类型是Optional ,并非我们想要的String类型 ,所以此处可以进行强制解包 ,将name2从Option包中解除 print(name2!) //强制解包 ,打印内容类型为String //注意:强制解包操作非常危险 ,因为如果可选类型中的值为nil ,系统会崩溃 //所以在解包前,必须进行判断 ,只有当包里的内容不为nil时才进行强制解包 if name2 != nil { print(name2) }
//4.可选绑定 (应用场景:如果我要反复的使用一个Optional包里的内容,如果我每次使用都要进行解包,是十分忧桑的一件事,所以苹果推出了一个可选绑定的语法如下) //实质上 let tempName = name2 这句话做了2个操作 //1.判断name2 是否为nil ,如果为nil ,直接不执行{}中的内容 //2.如果name2 不为nil ,进行解包并赋值给tempName, 执行{}中的内容 //写法一 (不常用) if let tempName = name2 { print(tempName) } //写法二 (常用) if let name2 = name2 { print(name2) }
//5. 可选类型的使用场景 //通过一个字符串创建一个URL let url = NSURL(string: "http://www.jyall.com") //此方法返回值为NSURL? ,如果使用url:NSURL 直接报错,类型不一致 let url1:NSURL? = NSURL(string: "http://www.jyall.com") //根据URL创建NSRequest if let url1 = url1 { let request = NSURLRequest(URL: url1) //强制解包 }
相关文章推荐
- swift 学习记录(可选类型 Optionals)
- Swift学习记录(Swift和Object-C混编之可选值类型的选择)
- swift学习记录(实例方法和类型方法)
- Swift学习:4.可选类型
- swift 学习计划(一) 解包、隐式解包的可选类型
- [swift]-可选类型使用
- 学习使用资源文件[10] - 嵌入和提取任何类型的文件
- Swift可选类型的使用
- Swift学习笔记————可选类型(Optional Type)
- Swift可选类型在函数中的使用
- swift学习-AnyObject类型记录
- swift学习03-可选类型Optional
- Swift中使用可选类型完美解决占位问题
- iOS swift学习之入门详解(可选类型错误处理)
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(10)--管理外部内容类型
- Swift学习05-optional可选类型
- JAVA学习(10) 继承(6) 使用父类类型调用子类
- swift学习记录(基本数据类型)
- swift 函数、函数类型及使用——swift学习(五)
- [Swift]学习笔记-可选类型/可选链