swift学习日记-可选链(optional chaining)

可选链式调用(Optional Chainingwiki

 

可选链式调用:是一种可以在当前值可能为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])")


转载于:https://my.oschina.net/u/216465/blog/657083

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值