본 내용은 스위프트 프로그래밍 3판 (야곰 지음) 교재를 공부한 내용을 바탕으로 작성 하였습니다.
Swift는 일반적인 변수나 상수에 nil을 대입하면 오류가 발생한다. 이때 변수나 상수를 옵셔널로 선언시 nil을 대입 할 수 있다.
옵셔널의 뜻은 다음과 같다.
변수나 상수에 값이 있을 수도, 없을 수도 있음을 나타내는 표현
이제 옵셔널로 선언된 변수나 상수에 nil을 대입 할 수 있다.
옵셔널 선언은 데이터 타입에 ?
키워드를 붙여 선언한다.
var studentID: Int? = 1234567
print(studentID)
studentID = nil //nil 대입
print(studentID)
옵셔널값을 그대로 쓰면 결과 값이 Optional(결과값) 형태로 나온다. 이것을 결과값만 나오게 하기위하여 옵셔널 추출을 이용하는데 방법은 세 가지가 있다.
강제 추출법
은 간단하지만 런타임 오류를 일으킬 수 있는 가능성이 높은 방법이다. 방법은 옵셔널 뒤에 !
키워드를 붙여서 강제 추출한다.
var myName: String? = "jeunghun"
var name_Value: String = myName! //optional값 강제 추출
print(name_Value)
만약 옵셔널에 nil값이 있으면 런타임 오류가 발생한다.
옵셔널 바인딩
은 if나 while문을 사용하여 조건문 안에서 사용 가능한 지역 변수 혹은 지역 상수를 생성하고 옵셔널값을 할당하여 옵셔널이 아닌 결과값을 사용 할 수 있게한다.
ar studentName: String? = "jeunghun"
if let name = studentName {
//변수도 상관 없음
print("학생의 이름은 \(name)입니다.")
} else {
print("studentName == nil")
}
암시적 추출 옵셔널
은 데이터 타입 뒤에 !
키워드를 사용하여 옵셔널을 선언한다.
암시적 추출 옵셔널로 선언한 변수나 상수는 일반적인 변수나 상수처럼 직접적으로 접근하여 사용이 가능하다.
(다만, nil 값이 할당 되어 있을때는 접근시 오류 발생)
var personName: String! = "jeunghun"
print(personName)
personName = nil //암시적 옵셔널 타입도 옵셔널 이므로 nil 사용가능
print(personName)