菜鸡学Swift2.0 6.可选型 (Optional)

1. 可选型的声明 ( 可选型的值可以是实值或者nil )

显示声明方法是在变量类型后面加上 ?(值可以是nil)
var name: String? = "jack"
隐式声明方法是在变量后面加上 !(具体使用时必须确定是有值得)
var name: String! = nil
name = "jack"

2. 可选型强制解包

强制解包在可选型后面加上!就可以
var name: String? = "jack"
"他的名字是:" + name!
强制解包值如果为nil就会出错
var name: String? = nil
"他的名字是:" + name!

3. if let 判断解包多个可选项不为nil

多个解包中间可以用","隔开,还可以用where来同时判断其他条件
解包完的值只能在{ } 中使用,在{ } 外面使用又变成可选型了
如果值是nil 则不可以解包
var errorMessge: String? = "信息"
var errorCode: String? =" 404 "
if let errorCode = errorCode , errorMessage where errorCode == "404" {
    "两个值都不为nil"
}

4. Optional Chaining 和 Nil-Coalesce

//uppercaseString 是把字符串变为大写
var errorMessage:String? = "Hello"
//尝试解包 如果值是nil 尝试解包失败就不执行后面的方法
errorMessage?.uppercaseString
//强制解包 如果值是nil 强制解包会报错
errorMessage!.uppercaseString
Optional Chaining ( 可选型链条 XXX?.XXXX?.XXXXX )
返回值是nil
var errorMessage:String? = nil
if let errorMessage = errorMessage?.uppercaseString {
    errorMessage
}
返回值是自定义的默认值
Nil-Coalesce (let 变量名 = 可选型 ?? "如果是nil给的默认值")
var errorMessage:String? = nil
let message = errorMessage ?? "默认值"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前学习 Swift 的时候都是比较破碎,零零散散,以至于有些地方学习的不够透彻。所以趁最近有时间,就开始重新学习...
    HenryCheng阅读 4,367评论 11 26
  • 对各种值为"空"的情况处理不当,几乎是所有Bug的来源。 在我们的例子里,尽管tmp的值是nil,但调用tmp的r...
    AKyS佐毅阅读 10,559评论 1 13
  • 本篇将详细总结介绍Swift可选型的用法;顾名思义,可选类型表示一个变量可能有值,也可能没有值(nil),但是它的...
    梧雨北辰阅读 506评论 2 9
  • 常量与变量使用let来声明常量,使用var来声明变量。声明的同时赋值的话,编译器会自动推断类型。值永远不会被隐式转...
    莫_名阅读 462评论 0 1
  • 孙尚香背后的影子来不及反应,只得立刻闪身离开,手中银光一闪,电子炮轰然炸开。孙尚香也已远遁。 墨子缓缓放下双臂,一...
    眠在四季的飞鱼阅读 403评论 5 4