美文网首页swift学习笔记
第十七章 可选链

第十七章 可选链

作者: 运柱 | 来源:发表于2017-07-20 06:36 被阅读0次

强制解析!可选类型会引起运行时错误。采用可选?来解析,可选链是一个链式访问,逐层访问。

class Person {

    var residence: Residence?

}

class Residence {

    var rooms = [Room]()

    var numberOfRooms: Int {

    return rooms.count

}

subscript(i: Int) -> Room {

    get {

        return rooms[i]

    }

    set {

        rooms[i] = newValue

    }

}

func printNumberOfRooms() {

    print("The number of rooms is \(rooms.count)")

}

var address: Address?

}

class Room {

    var name: String

    init(name: String) {

        self.name = name

    }

}

class Address {

    var buildingName: String?

    var buildingNumber: String?

    var street: String?

    func buildingIdentifier() -> String? {

        if buildingName != nil {

            return buildingName

        } else if buildingNumber != nil && street != nil {

            return "\(buildingNumber) \(street)"

        } else {

            return nil

        }

    }

}

let john = Person()

if let residence = john.residence {

    print(residence.printNumberOfRooms())

}

if let address = john.residence?.address {

    if let addressID = address.buildingIdentifier() {

        print(addressID)

    } else {

        print("Unable to retrieve address identifier")

    }

 } else {

    print("Unable to retrieve the address.")

}

john.residence = Residence()

if let residence = john.residence {

    print(residence.printNumberOfRooms())

}

if let address = john.residence?.address {

    if let addressID = address.buildingIdentifier() {

        print(addressID)

    } else {

        print("Unable to retrieve address identifier")

    }

} else {

    print("Unable to retrieve the address.")

}

john.residence?.address = Address()

john.residence?.address?.buildingName = "AiDing Dasha"

if let building = john.residence?.address?.buildingIdentifier() {

    print(building)

}

john.residence?.rooms.append(Room(name: "Room 1001"))

john.residence?.rooms.append(Room(name: "Room 1002"))

john.residence?[0] = Room(name: "Room 2001")

if let room = john.residence?[0] {

    print(room.name)

}

相关文章

  • Swift-13.可选类型深入探讨

    本章包含内容: 可选类型深入探讨 可选链的介绍 可选链的返回值 可选链调用下标索引 可选链的赋值操作 基于多层链接...

  • 第十七章 可选链

    强制解析!可选类型会引起运行时错误。采用可选?来解析,可选链是一个链式访问,逐层访问。 class Person ...

  • swift3语法(十三)

    可选链 定义可选链在取值可能为空的属性、方法、下标后面加上 ? 就表示一个可选链在可选值后面加上 ! 来强制展开,...

  • swift面向对象基础<三>

    接下来就讨论一下可选链,类型属性和类型方法,构造器 1.可选链是用于处理可选类型的属性,方法和下标2.使用可选链代...

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

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

  • 十三、可选链、协议、元类型

    可选链 可选链是一个调用和查询可选属性、方法和下标的过程,它可能为 nil 如果可选项是 nil ,属性、方法或者...

  • 【骚操作系列】一、如何通过babel配置使用可选链`?.`和双问

    如何通过babel配置使用可选链?.和双问号?? 什么是可选链 https://developer.mozilla...

  • 可选链

    可选链(Optional Chaining) 如果可选项为nil,调用方法、下标、属性失败,结果为nil 如果可选...

  • 15 可选链和异常处理

    1. 可选链 1.1 可选链的概念 它的可选性体现于请求或调用的目标当前可能为空(nil)如果可选的目标有值,那么...

  • Swift - 可选链

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

网友评论

    本文标题:第十七章 可选链

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