문법 (23) 옵셔널 체이닝 (Optional Chaining)
Swift에서 옵셔널 체이닝 (Optional Chaining)의 개념과 활용법을 설명합니다.
문법 (23) 옵셔널 체이닝 (Optional Chaining)
옵셔널 체이닝 (Optional Chaining)
옵셔널 체이닝(Optional Chaining)은 옵셔널이 nil인지 확인하면서 프로퍼티, 메서드, 서브스크립트에 접근하는 방법입니다.
이를 활용하면 nil 값이 있는 경우에도 안전하게 코드 실행을 멈출 수 있습니다.
1. 옵셔널 체이닝의 기본 개념
1
2
3
4
5
6
7
8
9
10
11
12
13
class Person {
var pet: Pet?
}
class Pet {
var name: String
init(name: String) {
self.name = name
}
}
let user = Person()
print(user.pet?.name) // nil (안전하게 실행 종료)
?.연산자를 사용하면 nil이면 실행을 멈추고 nil을 반환
2. 옵셔널 체이닝과 기본값 (?? 연산자)
1
2
let petName = user.pet?.name ?? "No Pet"
print(petName) // No Pet
??연산자를 사용하여 기본값 제공 가능
3. 옵셔널 체이닝을 통한 메서드 호출
1
2
3
4
5
6
7
8
9
10
11
class User {
func greet() {
print("Hello!")
}
}
var user: User? = User()
user?.greet() // Hello!
user = nil
user?.greet() // 실행되지 않음
?.을 사용하면 메서드를 안전하게 호출 가능
4. 옵셔널 체이닝과 배열, 딕셔너리
1
2
3
4
5
var names: [String]? = ["Alice", "Bob", "Charlie"]
print(names?.first) // Optional("Alice")
var dictionary: [String: Int]? = ["one": 1, "two": 2]
print(dictionary?["two"]) // Optional(2)
?.을 사용하면 컬렉션 요소에도 안전하게 접근 가능
5. 옵셔널 체이닝과 다중 체이닝
1
2
3
4
5
6
class Company {
var ceo: Person?
}
var company: Company? = Company()
print(company?.ceo?.pet?.name ?? "No CEO or Pet") // No CEO or Pet
- 여러 개의 옵셔널 체이닝을 활용하면 안전하게 여러 단계의 접근 가능
옵셔널 체이닝을 사용하면 nil 값이 있을 경우에도 안전하게 코드를 실행할 수 있습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.