반응형
옵셔널 체인
옵셔널 체인은 nil로 인한 에러 없이 옵셔널 타입을 사용할 수 있는 장점이 있다.
다음 코드의 프로퍼티에 접근하려면 if let을 사용해서 nil 체크를 해야 한다. 하지만 if let을 중첩 사용하면 옵셔널의 대가로 작성해야 하는 코드의 양이 너무 많다.
class Person {
var phone : MobilePhone?
}
class MobilePhone {
var number : String?
}
let john = Person()
if let phone = john.phone {
// 전화 있음
if let number = phone.number {
// 번호 있음
}
}
강제 언래핑을 이용해서 할 수도 있다. 하지만 swift 2.0에서 이러한 방식은 불가능하도록 변경되었다.
let number2 = john.phone!.number
옵셔널 체인은 옵셔널 프로퍼티에 물음표를 이용해서 접근하는 방식으로 다음과 같이 작성하며 중간 값이 nil이면 그 이후 언래핑을 넘기고 nil을 반환하므로 런타임 에러가 발생하지 않으므로 보다 안전한 코드 작성이 가능하다.
let number3 = john.phone?.number
// 옵셔널 체인은 배열이나 메소드 호출에서도 사용
john.phone?.call()
john.phone?[0].call()
반응형
댓글