옵셔널 (Optional)
Swift에서는 옵셔널(Optional) 을 사용하여 값이 있을 수도 있고, 없을 수도 있는 상황을 표현할 수 있습니다.
옵셔널은 안전한 코드 작성을 도와주는 중요한 개념입니다.
1. 옵셔널 선언과 기본 사용
1
2
| var name: String? = "Alice"
print(name) // Optional("Alice")
|
String? 타입은 String 또는 nil을 저장할 수 있음
2. 옵셔널 값 추출 (! 강제 언래핑)
1
2
| var name: String? = "Alice"
print(name!) // Alice
|
!를 사용하여 강제 언래핑(Forced Unwrapping)- 주의: 값이
nil이면 런타임 오류 발생
3. 안전한 옵셔널 바인딩 (if let)
1
2
3
4
5
6
7
| var name: String? = "Alice"
if let unwrappedName = name {
print("이름: \(unwrappedName)")
} else {
print("이름이 없습니다.")
}
|
4. guard let을 사용한 옵셔널 해제
1
2
3
4
5
6
7
8
9
10
| func greet(name: String?) {
guard let unwrappedName = name else {
print("이름이 없습니다.")
return
}
print("안녕하세요, \(unwrappedName)님!")
}
greet(name: "Alice") // 안녕하세요, Alice님!
greet(name: nil) // 이름이 없습니다.
|
guard let을 사용하면 조기 종료(early return) 로 코드 가독성이 향상됨
5. 옵셔널 체이닝 (?.)
1
2
3
4
5
6
| class Person {
var pet: String?
}
let user = Person()
print(user.pet?.count) // nil
|
?.을 사용하여 nil일 경우 자동으로 실행을 멈춤
6. ??를 활용한 기본값 설정
1
2
3
| var username: String? = nil
let displayName = username ?? "Guest"
print(displayName) // Guest
|
?? 연산자는 옵셔널이 nil일 경우 기본값을 제공
7. 암시적 옵셔널 (!)
1
2
| var email: String! = "user@example.com"
print(email) // user@example.com
|
!를 사용하여 nil이 아닌 것이 확실한 경우 암시적으로 언래핑nil일 경우 런타임 오류 발생 가능
옵셔널을 적절히 활용하면 안전한 코드 작성이 가능하며, 런타임 오류를 방지할 수 있습니다.