欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift_Optional

程序员文章站 2022-06-08 09:32:00
...

Optionl : 可选类型,可以让我们在一个具体的类型和nil之间进行选择

在swift中nil是一个类型,不能和其他的类型共存

var errorCode : Int = nil //这样会报错,不能直接把nil赋值给Int类型

var errorCode2 : Int? = nil //这是正确的书写方式,在int后面加上“?”,表示errorCode2可以为Int类型,也可以为nil; 

可选型解包

var errorCode : String? = "404"

erorrCode! //在变量后边加上“!”进行强制解包。当变量为nil时,解包时存在一定的风险

//if语句进行解包

if let errorCode = errorCode{

print("the errorCode is " + errorCode)

}else{

"no erorr"

}

多次解包嵌套

//第一种方法

var errorMessage:string? = "not found"

if let errorCode = errorCode{

  if let errorMessage = errorMessage{

   print("the errorCode is \(errorCode) and errorMessage is \(errorMessage)")

  }

}

//第二种方法

if let errorCode = errorCode , errorMessage = errorMessage{

  print("the errorCode is \(errorCode) and errorMessage is \(errorMessage)")

}

optional chaining

var errorMessage:String? = nil

var upercaseErrorMessage = errorMessage?.uppercaseString //在errorMessage后面加“?”意思是对error进行尝试解包,当errorMessage不为nil时,解包成功并继续向后运行,为nil时则解包失败,不会报错,也不会向后运行

var upercaseErrorMessage = errorMessage!.uppercaseString //对errorMessage进行强制解包,当errorMessage = nil 时会报错</code></pre>nil coalesce<pre><code>var errorMessage : String? = nil

letMessage:String

if let errorMessage = errorMessage{

  message = errorMessage

}else{

  message = "no error"

}

//对上面的判断进行更简单的写法

let message = errorMessage ?? "No error" //“??”对errorMessage进行判断,如果有值就取errorMessage,若为nil,就取值“No error”</code></pre>!!

END

推荐阅读