옵셔널 체이닝은 옵셔널 타입의 프로퍼티, 메소드를 호출하는 과정(a process)이다. 중간에 nil이 한번이라도 발생하면 결과는 무조건 nil이다. 프로퍼티나 메소드 리턴값이 nil이어도 런타임 에러 같은 crash가 발생하지 않는다. 옵셔널 체이닝으로 받는 값은 nil아니면 옵셔널 타입이다.
// 출처: https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID246
class Person {
var residence: Residence?
}
class Residence {
var numberOfRooms = 1
}
let john = Person()
let roomCount = john.residence!.numberOfRooms // ! 강제로 옵셔널을 벗기면 런타임 에러가 발생할 수 있다
if let roomCount = john.residence?.numberOfRooms { // 중간에 nil이어도 런타임 에러가 발생하지 않음
print("John's residence has \(roomCount) room(s).")
} else {
print("Unable to retrieve the number of rooms.")
}
반응형
'swift & iOS > swift' 카테고리의 다른 글
[swift] 제네릭 generic <> (0) | 2022.01.28 |
---|---|
[swift] error handling - throws 메소드 & do ... catch 문 (0) | 2022.01.28 |
[swift] 열거형 (enum with associated value)과 옵셔널 optional (0) | 2022.01.27 |
[swift] 함수의 inout 파라미터 (0) | 2022.01.27 |
[swift] 함수에서 여러 개의 값을 반환하기 (튜플) (0) | 2022.01.27 |