Swift基础_06可选类型

可选类型(Optional)

Optional

  • Optional是Swift中的可选类型

  • Optional 包括两种取值 nil 和 真实值

  • 什么是Optional ?

    • Optional是Swift中引入的可选类型.在Swift中声明一个标识符的时候,默认情况下它是non-optional的,如此,该标识符只能被赋值非空的值,当给non-optional赋值nil的时候编译器会报错。
      • 对于OC的同学来说有点奇怪,之前声明变量NSString的变量初始值可以为nil的。
      • 因为nil在Swift中是一种特殊类型,所以不能赋值给指定数据类型的标识符

为什么引入可选类型

  • Swift是一个安全的编程语言,可选类型就是安全语言的一大体现。OC中运行时才会发现的错误,Swift中的可选类型在编译阶段就能找出一些OC中运行时出现的错误。

  • Swift加强了对空值的检查


代码演练

定义可选类型

// 错误写法
// let string : String = nil
// 正确写法:
// 写法一:定义可选类型
let string : Optional = nil

// 写法二:定义可选类型,语法糖(常用)
let string : String? = nil

给可选类型赋值

string = "CWB"

// 打印结果
print(string)
// 结果:Optional("CWB")\n
// 因为打印出来的是可选类型,所有会带Optional

拆包 !

  • 在可选类型的标识符后面加! 就是对可选类型进行强制拆包

    • 拆包就是把可选类型的真实值取出来

    • 强制拆包在一定程度上是有风险的,如果可选类型取值nil会造成崩溃

// 取出可选类型的真实值(解包)
print(string!)
// 结果:CWB\n   没有了Optional

// 注意:如果可选类型为nil,强制取出其中的值(解包),会出错
string = nil
print(string!) // 报错
// 正确写法:  但是这种写法在正常开发中会造成if语句的嵌套
if string != nil {
    print(string!)
}

可选绑定

  • 可选绑定作用

    • 让代码更简洁
    • 可选绑定会先判断标识符是否为nil,如果不为nil则对标识符进行拆包
// 简单写法:为了让在if语句中可以方便使用string
if var str = string {
    print(str)
}
// 可选绑定示例 创建request

// 通过该方法创建的URL,可能有值,也可能没有值
// 错误写法:如果返回值是nil时,就不能接收了
let url : NSURL = NSURL(string: "www.520it.com")

// 正确写法:使用可选类型来接收
let url : NSURL? = NSURL(string: "www.520it.com")

// 通过url来创建request对象
if let url = url { 
let request = NSURLRequest(URL: url)
}

总结

可选类型在Swift基础中算是一个比较难理解的概念,但慢慢熟悉了就会发现其中的奥妙,可选绑定初学的同学可能感觉比较麻烦,没关系 ,多用用就会发现你爱上它了。

你可能感兴趣的:(Swift基础_06可选类型)