본문 바로가기
Swift

13. 옵셔널 체인

by 루에 2015. 10. 14.
반응형

옵셔널 체인


옵셔널 체인은 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()











반응형

댓글