Swift3.0基本语法(五)——封包和拆包

一、可选类型(Optional)

        相对OC而言,Swift增加一种可选类型(Optional),可选类型的含义是表示一个值可能是有值的,也有可能没有值(nil)。在OC中nil是个指针,但是在Swift中,在可选类型情况下,nil仅仅表示可选类型没有值。

Swift3.0基本语法(五)——封包和拆包_第1张图片
可选类型

二、拆包

         1、 什么是拆包?拆包其实就是一个可选类型有值的时候,打印结果带有可选类型(Optional)标记,当我们去掉可选类型(Optional)的过程就成为拆包,例如:将Optional String类型强制转换为String类型的过程,就是一种拆包过程。

Swift3.0基本语法(五)——封包和拆包_第2张图片
拆包过程

         2、强制拆包:当我们在进行拆包过程中,如果对可选类型(Optional)是否有值不做处理,进行拆包的过程,其实就是一种强制拆包的过程,如果某一个可选类型(Optional)没有值,而我们又进行强制拆包的操作,就会崩溃,报错提示如下:

fatal error: unexpectedly found nil while unwrapping an Optional value

Swift3.0基本语法(五)——封包和拆包_第3张图片
强制拆包


      3、正确的拆包方式

           首先我们需要对可选类型(Optional)是否有值进行判断,如果可选类型(Optional)有值,可以进行拆包,如果可选类型(Optional)没有值,则不能进行拆包工作,一般使用 if - else语句来判断。

Swift3.0基本语法(五)——封包和拆包_第4张图片
正确拆包方式

三、封包

          什么是封包?简单来就是将一种确定的数据类型转换为可选类型(Optional)的过程,我们称之为封包。例如:将String类型转换为Optional String类型的过程,其实就是一种封包过程。

          封包一般分显式封包和隐式封包,如下图:

Swift3.0基本语法(五)——封包和拆包_第5张图片
封包

你可能感兴趣的:(Swift3.0基本语法(五)——封包和拆包)