값이 없을 수도 있다는 상황에서 옵셔널을 사용합니다.

옵셔널은 두 가지의 가능성을 나타냅니다. 특정한 타입의 값이 있고 그 값에 접근하기 위해 옵셔널을 언래핑할 수 있거나 값이 없거나

예를 들어 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를 얻을 수 있습니다.

스크린샷 2024-02-05 오후 3.00.14.png

if, guard, while 구문을 통해 옵셔널 바인딩을 사용할 수 있습니다

if let actualNumber = Int(possibleNumber) {
} else {
}
let myNumber = Int(possibleNumber)

if let myNumber = myNumber {
    print(myNumber)
}