Swift专题

swift中的可选变量

2018-05-09  本文已影响132人  记忆的北极
一,可选变量的定义
//定义可选变量类型,以下两种方式是一样的 ?表示可选类型Option
var optionalInteger:Int?
var optionalInteger1:Optional<Int>

//可选变量 -数组
var dataArray:([Int])?
//可选变量 -字典
var searchDic:([String:Any])?

//可选变量的声明和初始化赋值 使用?和!都可以声明可选变量
var var1:String? = nil
var var2:String! = "12345"

二,强制解析

使用可选变量的时候需要使用!来解析可选变量里面的值(强制解析 forced unwrapping), 使用!的时候表示这个可选变量里面一定有值,如果可选变量没有提供初始值,那么默认是nil

//使用了?创建的可选变量,解析的时候需要使用强制解析
var userName:String?
userName = "hello swift!"

//如果一个可选类型是包含一个值,那么可以使用操作符!来取这个值
//如果可选类型是个nil, 使用!来获取可选类型里的值会出现错误
//nil值是针对类(class)有用, 而可选类型对所有的类型都有用,并且安全
//要解决这个问题需要先判断可选类型是否是nil
if userName != nil {
   //打印可选变量
   print(userName)
    //打印可选变量里的值
    //我已经确认userName这个可选变量有值
    //所以我可以强制解析(forced unwrapping), !获取可选变量里的值
   print(userName!)
}else{
    print("userName = nil")
}
三,自动解析

使用!声明的可选变量不需要强制解析,所以用!声明的可选变量不需要使用!来解析,而是直接使用,因为已经是自动解析了

var userName1:String!
userName1 = "This is automatic unwrapping!"
print(userName1)
四,可选绑定(optional binding)

1,可选绑定是用来判断可选类型是否包含值的,如果包含就会赋值给一个临时常量或变量
2,可选绑定一般结合使用if或while语句来使用

if let name = userName {
  print("name=\(name)")
}else{
  print("name = nil") 
}
上一篇下一篇

猜你喜欢

热点阅读