swift 4.1 可选型optional
标签(空格分隔): swift
可选型 optional ,表示一个值可能为空。但是这个空,在swift中就叫可选型,用关键字nil
表示。它既不是0,也不是不存在,它就是nil
要么是它自身的值,要么为nil。nil就是可选型的默认值
简单记录下,就不展开的说了。
0. 申明一个可选项
用: 字符类型+? 必须显示的申明
1. 不能隐示的申明
2. 可选型的解包。
解包就是我得使用它了。确认强制解包用:!
3. 可以用if 判断可选型是否为nil,安全后再用!解包
4. if 联合使用 let 关键字解包,可以不用!了
5. 使用 if let 解包多个可选型的值。相当于 and 操作
- if let errorCode5 = errorCode5,errorMessage = errorMessage{
- print("code is \(errorCode5),msg is \(errorMessage)")
- //打印:code is 502,msg is Not Found!
- }
6. 使用 if let 再加 where 进一步限定
7. Optional chaining 链式操作
- //解包
- var errorMessage2: String? = "Not Found"
- if let errorMessage2 = errorMessage2{
- print(errorMessage2.uppercaseString) // "NOT FOUND" 全部大写了
- }
-
- //chaining操作就是可以直接用:
-
- if let errorMessage2 = errorMessage2?.uppercaseString{
- print(errorMessage2) // "NOT FOUND" 全部大写了
- }
-
- //也可以直接用 !强制解包,前提是你确定一定不为nil。
- let upperMessage2 = errorMessage2!.uppercaseString //"NOT FOUND" 全部大写了
8. 使用 ?? 解包。更加单的三目运算符
- let message2 = errorMessage == nil ? "No error" : errorMessage!
-
- //等价。如果 errorMessage 解包成功,就把解包解包的值给 message3
- let message3 = errorMessage ?? "No error" // "Not Found!"
9 .在元祖里面使用可选型
10 .隐士的申明
待续