首先来说一些Swift中的Optional,译为可选项,他是一个枚举类型,有以下两个值
1. none:表示没有值
2. some:某一类值
原始可选项的定义:
-
-
-
-
- let x: Optional = 10
简单的定义:
-
-
- 1
-
-
- 2
-
-
-
-
- //'?'用来定义 y 是一个可选的 Int 类型,可能没有值,也可能是一个整数
- ley y: Int? = 20
此时打印 x 和 y
-
-
- 1
-
-
- 2
-
-
- 3
-
-
- 4
-
-
- 5
-
-
-
-
- print(x)
- print(y)
- Optional(10)
- Optional(20)
此时我们打印二者求和,编译器给出警告
根据编译器的提示,修改如下
-
-
- 1
-
-
- 2
-
- print(x! + y!)
此时我们回头把x的重新定义,其他代码不变,运行工程
- let x: Int? = nil
此时程序崩溃到了print位置
同时控制台打印,意思是在解包的时候发现了nil值
“fatal error: unexpectedly found nil while unwrapping an Optional value”
Swift中,’!’:强行解包,从可选值中强行获取对应的非空值,如果真的遇见nil,程序直接崩溃.就是说不同类型之间的值不能直接运算!如果没有值是nil(Optional枚举中的none),nil不是任何数据类型,不能参与计算
转自:http://blog.csdn.net/feng2qing/article/details/53453135