一、可选类型(Optional)
相对OC而言,Swift增加一种可选类型(Optional),可选类型的含义是表示一个值可能是有值的,也有可能没有值(nil)。在OC中nil是个指针,但是在Swift中,在可选类型情况下,nil仅仅表示可选类型没有值。
二、拆包
1、 什么是拆包?拆包其实就是一个可选类型有值的时候,打印结果带有可选类型(Optional)标记,当我们去掉可选类型(Optional)的过程就成为拆包,例如:将Optional String类型强制转换为String类型的过程,就是一种拆包过程。
2、强制拆包:当我们在进行拆包过程中,如果对可选类型(Optional)是否有值不做处理,进行拆包的过程,其实就是一种强制拆包的过程,如果某一个可选类型(Optional)没有值,而我们又进行强制拆包的操作,就会崩溃,报错提示如下:
fatal error: unexpectedly found nil while unwrapping an Optional value
3、正确的拆包方式
首先我们需要对可选类型(Optional)是否有值进行判断,如果可选类型(Optional)有值,可以进行拆包,如果可选类型(Optional)没有值,则不能进行拆包工作,一般使用 if - else语句来判断。
三、封包
什么是封包?简单来就是将一种确定的数据类型转换为可选类型(Optional)的过程,我们称之为封包。例如:将String类型转换为Optional String类型的过程,其实就是一种封包过程。
封包一般分显式封包和隐式封包,如下图: