当前位置:K88软件开发文章中心编程语言APP编程Swift01 → 文章内容

Swift 可选链

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:31:26

gNumber } else { return nil } }}let john = Person()if let johnsStreet = john.residence?.address?.street { print("John 的地址为 \(johnsStreet).")} else { print("不能检索地址")}以上程序执行输出结果为:不能检索地址实例2如果你为Address设定一个实例来作为john.residence.address的值,并为address的street属性设定一个实际值,你可以通过多层可选链来得到这个属性值。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("房间号为 \(numberOfRooms)") } var address: Address?}class Room { let 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) { return buildingNumber } else { return nil } }}let john = Person()john.residence?[0] = Room(name: "浴室")let johnsHouse = Residence()johnsHouse.rooms.append(Room(name: "客厅"))johnsHouse.rooms.append(Room(name: "厨房"))john.residence = johnsHouseif let firstRoomName = john.residence?[0].name { print("第一个房间是\(firstRoomName)")} else { print("无法检索房间")}以上实例输出结果为:第一个房间是客厅对返回可选值的函数进行链接我们还可以通过可选链接来调用返回可空值的方法,并且可以继续对可选值进行链接。实例class Person { var residence: Residence?}// 定义了一个变量 rooms,它被初始化为一个Room[]类型的空数组class Residence { var rooms = [Room]() var numberOfRooms: Int { return rooms.count } subscript(i: Int) -> Room { return rooms[i] } func printNumberOfRooms() { print("房间号为 \(numberOfRooms)") } var address: Address?}// Room 定义一个name属性和一个设定room名的初始化器class Room { let name: String init(name: String) { self.name = name }}// 模型中的最终类叫做Addressclass Address { var buildingName: String? var buildingNumber: String? var street: String? func buildingIdentifier() -> String? { if (buildingName != nil) { return buildingName } else if (buildingNumber != nil) { return buildingNumber } else { return nil } }}let john = Person()if john.residence?.printNumberOfRooms() != nil { print("指定了房间号)")} else { print("未指定房间号")}以上程序执行输出结果为:未指定房间号

上一页  [1] [2] [3] 


Swift 可选链