[swift] 옵셔널 체이닝의 주의할 점

옵셔널 체이닝은 Swift에서 안전하게 옵셔널 값을 다루는 유용한 방법입니다. 그러나 몇 가지 주의할 점이 있습니다. 이 블로그 포스트에서는 옵셔널 체이닝을 사용할 때 주의해야 할 사항에 대해 알아보겠습니다.

옵셔널 체이닝과 강제 추출

옵셔널 체이닝을 사용하면 속성, 메서드 또는 서브스크립트를 호출할 때 그 값이 nil이면 호출이 실패하고 전체 표현식의 값도 nil이 됩니다. 하지만 속성이나 메서드의 반환 타입이 옵셔널이 아닌 경우, 옵셔널 바인딩 없이 바로 값을 사용할 수 없습니다. 따라서 체이닝된 값이 옵셔널이 아닌 경우에는 주의해야 합니다.

예를 들어, 다음과 같이 옵셔널 체이닝을 사용하는 경우:

class Person {
    var pet: Pet?
}

class Pet {
    var name: String
}

let person: Person? = getPerson()
let petName = person?.pet?.name // 옵셔널 (String)이 아님

petNameString?이 아니라 String이 아므로 nil인 경우를 고려해야 합니다.

옵셔널 체이닝과 값 할당

옵셔널 체이닝은 값의 호출에만 사용해야 합니다. 즉, 값을 변경하거나 할당하는 데에는 사용할 수 없습니다. 옵셔널 체이닝을 통해 얻은 값을 변경하고 싶은 경우, 옵셔널 바인딩을 통해 안전하게 값을 추출한 후 변경해야 합니다.

person?.pet?.name = "Max" // 에러 발생

위 코드에서 pet?.name의 값을 변경하려고 시도하면 에러가 발생합니다.

결론

옵셔널 체이닝은 옵셔널 값의 안전한 다루기에 유용한 도구이지만, 올바르게 사용하기 위해서는 몇 가지 주의할 점을 알고 있어야 합니다. 옵셔널 체이닝이 어떤 경우에 적합한지 이해하고, 올바르게 활용하여 안전한 코드를 작성하는 것이 중요합니다.

Swift 공식 문서 - 옵셔널 체이닝