使用swift 开发,会用到String? 和 String 、 Int 和 Int? 、Float 和Float?……,对于官方文档的解锁,“?”所标注的为可选类型。鉴于swif的语言特性,变量在创建之初,就需要知道它的类型,可以是使用“:”标注。例如代码:
var name : String
或者是赋值时,值的类型即为该变量的类型,例如代码:
var name = "White Lee"
除了以上的数据类型,swift还有一种常用的的类型,即为可选类型,表示该变量值可以为空值,即为:nil。就我个人理解,可选类型不是一个单一的数据类型,它是数据类型的一个拓展,表示该变量可为空值。我们常用的可选类型可以是 基本数据类型,如:
String?
Int?
Float?
Bool?
也可以是任何其他变量的类型:
UITableView?//UI控件
Model?//数据模型 自定义的
ViewController?//控制器
对于可选类型,对变量取值时,我们发现它是被“Optional()”包裹了一层,例如:
var name : String? = "White Lee"
var name1 : String = "White Lee"
print("name = \(name)")
print("name1 = \(name1)")
日志打印结果:
拆包方法:
使用“??”设置如果为空值时的默认值,代码:
print("name = \(name ?? "值为空")")
打印结果:
可以看到,此时“Optional()”被去除。
对于不带带有"?"的非可选类型数据,添加"??",可以看到Xcode会提示去除"??",如下图
现在修改变量name的值,代码:
name = nil
print("name = \(name ?? "值为空")")
打印结果:
以上为我对于可选类型optional的理解,和我的拆包方法。
如果对于非可选类型变量赋值为nil,代码
var name1 : String = "White Lee"
name1 = nil
会提示错误: Nil cannot be assigned to type 'String'