- swift에 대해 공부한 내용을 정리한 글입니다.
- 해당 글은 한빛미디어의 스위프트 프로그래밍 3판을 참고하여 작성했습니다.
옵셔널 체이닝은 옵셔널에 속해 있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정이다. 옵셔널에 값이 있다면 프로퍼티, 메서드, 서브스크립트 등을 호출할 수 있고, 옵셔널이 nil이라면 프로퍼티, 메서드, 서브스크립트 등은 nil을 반환한다.
즉, 옵셔널을 반복 사용하여 옵셔널이 자전거 체인처럼 서로 꼬리를 물고 있는 모양이기때문에 옵셔널 체이닝이라고 부른다.
struct Developer {
let name: String
}
struct Company {
let name:String
var developer: Developer?
}
var developer = Developer(name: "kim")
var company = Company(name: "Hoojeong", developer: developer)
print(company.developer?.name)
print(company.developer!.name)
Optional("kim")
kim
결과를 보면 알 수 있다 싶이, 물음표(?)를 사용한 경우에는 nil이 반환될 수 있으므로 옵셔널에 쌓여있다.
반대로 느낌표(!)의 경우, 옵셔널에서 값을 강제 추출하는 효과가 있어서 옵셔널을 벗긴 본래의 값을 반환한다. 하지만 강제로 추출하기 때문에 옵셔널에 값이 없다면 런타임 에러가 발생할 수 있다. 때문에 느낌표(!)의 사용은 지양하는 것이 좋다.