값이 없을 수도 있다는 상황에서 옵셔널을 사용합니다.
옵셔널은 두 가지의 가능성을 나타냅니다. 특정한 타입의 값이 있고 그 값에 접근하기 위해 옵셔널을 언래핑할 수 있거나 값이 없거나
예를 들어 Int를 String으로 변환시킬 때 “123”은 숫자 123으로 변환할 수 있지만 “Hello”는 숫자로 변환할 수 없습니다.
Int()는 Int? 혹은 Int를 반환합니다
옵셔널 변수에 nil을 할당하여 값이 없는 상태로 만들 수 있습니다.
기본값을 가지고 있지 않은 옵셔널 변수를 선언한다면 그 변수는 자동적으로 nil로 설정됩니다.
var surveyAnswer: String? // nil
옵셔널이 값을 가지고 있는지 아닌지를 알아내기 위해서 nil과의 비교 구문을 사용할 수도 있습니다.
let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
if convertedNumber != nil {
print("convertedNumber contains some integer value.")
}
옵셔널 상수 또는 변수가 아니라면 nil을 사용할 수 없습니다
만약 상수 또는 변수가 어떤 상황에서 값이 없을 수도 있도록 작동해야할 필요가 있다면 옵셔널을 사용하세요
만약 옵셔널이 아닌 상수 또는 변수에 nil을 할당하게 된다면 compile-time error를 얻을 수 있습니다.
if, guard, while 구문을 통해 옵셔널 바인딩을 사용할 수 있습니다
if let actualNumber = Int(possibleNumber) {
} else {
}
let myNumber = Int(possibleNumber)
if let myNumber = myNumber {
print(myNumber)
}