본 내용은 '스위프트 프로그래밍' 책을 학습한 후 이를 바탕으로 작성한 글입니다.
- 옵셔널은 스위프트의 특징 중 하나인 안정성을 문법으로 담보하는 기능이다.
- 옵셔널은 값이 있을 수도, 없을 수도(nil)를 나타내는 표현이다.
nil
을 할당할 수 있다.(일반 변수 또는 상수에 nil
을 할당하면 컴파일 오류 발생!)var city: String? = "Seoul"
print(city) //Seoul
city = nil
print(city) //nil
옵셔널이 아닌 변수에는 옵셔널 값이 들어갈 수 없으므로 추출해서 할당해주어야 한다.
var food: String? = "pizza"
var myFavoriteFood: String = food!
print(myFavoriteFood) //pizza
food = nil
myFavoriteFood = food! //런타임 오류
if
또는 while
구문 등과 결합하여 사용할 수 있다.var myName: String? = "zooneon"
//상수에 할당
if let name = myName {
print("My name is \(name)")
} else {
print("myName == nil")
}
//My name is zooneon
//변수에 할당
if var name = myName {
name = "mike"
print("My name is \(name)")
} else {
print("myName == nil")
}
//My name is mike
nil
을 할당해줄 수 있는 옵셔널이 아닌 변수나 상수를 사용할 때 사용한다.nil
도 할당할 수 있다.nil
이 할당되어 있을 때 접근을 시도하면 런타임 오류가 발생한다.var myPhone: String! = "iPhone"
print(myPhone) //iPhone
myPhone = nil
if let phone = myPhone {
print("My phone is \(phone)")
} else {
print("myPhone == nil")
}
//myPhone == nil