이번 글에서는 옵셔널 체이닝과 빠른 종료에 대해 작성해보려고 한다.
옵셔널 체이닝
class Room {
var number: Int
init(number: Int) {
self.number = number
}
}
class Building {
var name: String
var room: Room?
init(name: String) {
self.name = name
}
}
struct Address {
var province: String
var city: String
var street: String
var building: Building?
var detailAddress: String?
}
class Person {
var name: String
var address: Address?
init(name: String) {
self.name = name
}
}
let ted: Person = Person(name: "ted")
let tedRoomViaOptionalChaining: Int? = ted.address?.building?.room?.number //nil
let tedRoomViaOptionalUnwraping: Int? = ted.address!.building!.room!.number //런타임 에러
let ted: Person = Person(name: "ted")
if let roomNumber: Int = ted.address?.building?.room?.number {
print(roomNumber)
} else {
print("Can not find room number")
}
ted.address = Address(province: "인천광역시", city: "부평구", street: "마장로", building: nil, detailAddress: nil)
ted.address?.building = Building(name: "무지개아파트") //값 할당
ted.address?.building?.room = Room(number: 0)
ted.address?.building?.room?.number = 1508
print(ted.address?.building?.room?.number) //Optional(1508)
guard 구문
//if 구문
for i in 0...3 {
if i == 2 {
print(i)
} else { //else를 통해 continue를 진행해야 한다
continue
}
}
//guard 구문
for i in 0...3 {
guard i == 2 else { continue }
print(i)
}
[출처] 스위프트 프로그래밍 (야곰), 야곰의 스위프트 기초문법 강좌, 개발하는 정대리 스위프트 강좌