Swift学习07:Optional的使用
为什么需要 Optional?
Object-C 中用
nil
表示指向不存在对象的指针
,其他地方用NSNotFound
表示值缺失
Swift 中用
可选(Optional)
类型表示值缺失
,只有可选类型才能设置为nil
Optional 含有两种枚举,
None
和Some(T)
,用来表示可能有值或可能没有值。
示例
1 | var optionalInteger: Int? |
Optional
通过在
变量类型
后面加?
表示这里有一个值,它等于x
,或者这里根本没有值你可以通过给可选变量赋值一个
nil
来将之设置为没有值在
Object-C
中nil
是一个指向不存在对象的指针
在
Swift
中,nil
不是指针,它是值缺失的一种特殊类型
,任何类型的可选项都可以设置成nil
而不仅仅是对象- 只有
可选类型
才能设置为nil
- 只有
1 | var str: String = nil |
Optional-If 语句以及强制解包
可选类型
是没法直接使用的需要用
!
号强制解包
后才能使用(意思是我知道这个可选项里面有值,使用吧)
1 | var str: String? = "abc" |
需要改成如下代码,才能正确执行
1 | var str: String? = "abc" |
或
1 | var str: String? = "abc" |
Optional-绑定
可以使用
可选绑定
来判断可选项是否包含值,如果包含就把赋值给一个临时的常量或变量
可选绑定可以与
if
和while
的语句使用来检查可选项内部的值,并赋值给一个变量或常量同一个
if
语句中包含多可选项绑定,用逗号分割即可。如果任一可选绑定结果是nil
或者布尔值
为false
,那么整个if
判断会被看做false
1 | var str:String? = "abc" |
Optional - 隐士解包
有些可选项一旦被设定值之后,就会一直拥有值,在这种情况下,就可以去掉检查的需求,也不必每次访问的时候都进行解包
通过有
声明的类型后边添加一个叹号
(String!)而非问号(String?)来书写隐士解包
可选项
1 | var str:String! = "abc" |
- 隐士解包可选项主要被用在Swift
类
的初始化过程中
Optional-可选链
可选项后面加问号
如果可选项不为nil,返回一个可选项结果,否则为nil
1 | var str:String? = "abc" |
将上面的代码改为:
1 | var str:String? = "abc" |
- Post title:Swift学习07:Optional的使用
- Post author:张建
- Create time:2023-02-22 02:55:20
- Post link:https://redefine.ohevan.com/2023/02/22/Swift课程/Swift学习07:Optional的使用/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.