美文网首页
可选链式调用

可选链式调用

作者: 一根聪 | 来源:发表于2017-03-03 11:25 被阅读20次

可选链式调用(Optional Chaining)wiki

可选链式调用:是一种可以在当前值可能为nil的可选值请求和调用属性、方法或者下标。与Objective-C中向nil发送消息有些相像,但是swift可选链式调用可以作用于任何类型,并且能检查调用是否成功。

1 使用可选链式调用代替强制展开
通过在想调用的属性、方法或下标的可选值(optional value)后面跟一个?,可以定义一个可选链,与!类似,不同之处在于!可能会出发运行时错误。

class Person {
    var name: String?
}

let person = Person()
print(person.name?.characters.count)  // nil
print(person.name!.characters.count)  // 运行时错误

2 为可选链式调用定义模型类型
通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法或下标。

3 通过可选链式调用访问属性
4 通过可选链式调用调用方法
5 通过可选链式访问下标
如下例子 ,存在一个Student类和一个Teacher类

class Student {
    var name: String?
    
    func read() {
        print("read book")
    }
}

class Teacher {
    var students: [Student]?
    var numberOfStudent: Int? {
        get {
            return students?.count
        }
    }
    
    subscript (i: Int) -> Student? {
        return self.students?[i]
    }
}

let teacher = Teacher()
// 访问属性
print("number Of Student: \(teacher.numberOfStudent)")
// 访问方法
teacher.students?[0].read()
// 访问下标
print("first Student: \(teacher[0])")

相关文章

  • swift重温笔记(可选链式调用)

    使用可选链式调用代替强制展开 为可选链式调用定义模型类 通过可选链式调用访问属性 通过可选链式调用调用方法 通过可...

  • 可选链式调用

    可选链式调用(Optional Chaining)wiki 可选链式调用:是一种可以在当前值可能为nil的可选值请...

  • swift-可选链式调用

    结论: 如果你访问的值不是可选的,可选链式调用将会返回可选值(eg: 可选链式调用访问一个String值,将会返回...

  • [iOS笔记]Swift中的可选链式调用的注意点

    通过可选链式调用访问属性 下面代码中的赋值过程是可选链式调用的一部分,这意味着可选链式调用失败时,等号右侧的代码不...

  • Optional Chain(可选链式调用)

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

  • Swift学习笔记十三之可选链式调用

    1、可选链式调用:通过点语法调用属性、方法、下标 // 可选链式调用可以在当前值为nil的情况下调用属性,方法,下...

  • 可选链式调用

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

  • swift 可选链式调用

    可选链式调用是指在当前值可能为ni的情况下,用当前值去获取它的属性、方法及其下标如果可选值有值,调用就会成功如果可...

  • Swift - 可选链式调用

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

  • Swift可选链式调用

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

网友评论

      本文标题:可选链式调用

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