美文网首页
Swift:基础(二十六)可选链

Swift:基础(二十六)可选链

作者: 解码漫聊 | 来源:发表于2018-01-18 11:16 被阅读0次

Swift 可选链

可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil。

可选链返回两个值:

  • 如果目标有值,调用就会成功,返回该值

  • 如果目标为nil,调用将返回nil

多次请求或调用可以被链接成一个链,如果任意一个节点为nil将导致整条链失效。


可选链可替代强制解析

通过在属性、方法、或下标脚本的可选值后面放一个问号(?),即可定义一个可选链。

可选链 '?' 感叹号(!)强制展开方法,属性,下标脚本可选链
? 放置于可选值后来调用方法,属性,下标脚本 ! 放置于可选值后来调用方法,属性,下标脚本来强制展开值
当可选为 nil 输出比较友好的错误信息 当可选为 nil 时强制展开执行错误

使用感叹号(!)可选链实例

class Person {
    var residence: Residence?
}

class Residence {
    var numberOfRooms = 1
}

let john = Person()

//将导致运行时错误
let roomCount = john.residence!.numberOfRooms

以上程序执行输出结果为:

fatal error: unexpectedly found nil while unwrapping an Optional value

想使用感叹号(!)强制解析获得这个人residence属性numberOfRooms属性值,将会引发运行时错误,因为这时没有可以供解析的residence值。

使用问号(?)可选链实例

class Person {
    var residence: Residence?
}

class Residence {
    var numberOfRooms = 1
}

let john = Person()

// 链接可选residence?属性,如果residence存在则取回numberOfRooms的值
if let roomCount = john.residence?.numberOfRooms {
    print("John 的房间号为 \(roomCount)。")
} else {
    print("不能查看房间号")
}

以上程序执行输出结果为:

不能查看房间号

因为这种尝试获得numberOfRooms的操作有可能失败,可选链会返回Int?类型值,或者称作"可选Int"。当residence是空的时候(上例),选择Int将会为空,因此会出现无法访问numberOfRooms的情况。

要注意的是,即使numberOfRooms是非可选Int(Int?)时这一点也成立。只要是通过可选链的请求就意味着最后numberOfRooms总是返回一个Int?而不是Int。


相关文章

  • Swift:基础(二十六)可选链

    Swift 可选链 可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于...

  • Swift基础语法-可选链

    1. 可选连的概念 可选链:有多个可选类型组成的一个链条被称之为可选链 它的可选性体现于请求或调用的目标当前可能为...

  • Swift3.0- 类型转换、Any、AnyObject(可选链

    Swift3.0- 类型转换、Any、AnyObject(可选链)

  • Swift可选类型、隐式可选类型与可选链

    Swift 可选类型、隐式可选类型与可选链 在 OC 中 nil 表示一个指向不存在的对象的指针,而 Swift ...

  • iOS开发 - 「Swift 学习」Swift 可选链

    Swift 可选链 可选链的定义:可选链是可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil...

  • 【Swift 3.1】17 - 可选链 (Optional Ch

    【Swift 3.1】17 - 可选链 (Optional Chaining) 自从苹果2014年发布Swift,...

  • Swift:可选链

    可选链式调用是一种可以在当前值可能为 nil 的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用...

  • Swift - 可选链

    可选链 可选链 它的可选性体现于请求或者调用的目标当前可能为空 (nil)如果可选的目标有值,那么调用就会成功;如...

  • Swift 可选链

    可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能...

  • swift可选链

    可选链是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法,如果可选值有值,那么就会调用成功;...

网友评论

      本文标题:Swift:基础(二十六)可选链

      本文链接:https://www.haomeiwen.com/subject/mhyyoxtx.html