leebaek

[Swift] 데이터 타입 | 스위프트 옵셔녈 타입 본문

개발/Swift

[Swift] 데이터 타입 | 스위프트 옵셔녈 타입

leebaek 2023. 12. 27. 19:01

 

☆ [핵심만 골라배우는 SwiftUI 기반의 iOS 프로그래밍] 책 내용 중 기억할 내용을 정리하였습니다.


■ 옵셔널 타입

: 변수 또는 상수에 값이 할당되지 않은 상황을 처리하기 위해 안전하고 일관된 접근 방식을 제공하는 것이다.

- 할당된 값이 없거나 nil을 할당할 수 있는 유일한 데이터 타입

 

□ 선언 방법

- 데이터 타입 애너테이션 다음에 '?' 문자를 두어 옵셔널이 되게 한다.

var index: Int?

■ 옵셔널 값 사용 방법

 

강제 언래핑 

옵셔널에 값이 할당되었다면 해당 값이 옵셔널 내에서 래핑되었다고 말한다.

옵셔널 안에 래핑된 값을 사용할 때는 강제 언래핑을 이용한다.

-옵셔널 이름 뒤에 느낌표(!)를 둔다.

// 값이 할당되었는지 확인하는 방법
var index: Int?

if index != nil {
	// 값이 할당되었음
} else {
	// 값이 할당되지 않음
}

// 강제 언래핑을 이용하여 데이터를 출력하는 방법 ( ! 사용 )
var index: Int?

index = 3
if index != nil {
	print(index!)
} else {
	// 값이 할당되지 않음
}

 

옵셔널 바인딩

- 옵셔널로 할당된 값은 옵셔널 바인딩을 이용하여 임시 변수나 상수에 할당할 수 있다.

var index: Int?

index = 3
var treeArray = ["Oak", "Pine", "Yew", "Birch"]

if let myvalue = index {
	print(treeArray[myvalue])
} else {
	// 값이 할당되지 않음
}

 

> if 문에서 두가지 작업을 수행한다.

첫번째는 지정된 옵셔널이 값을 가지고 있는지를 확인하고,

두번째는 옵셔널 변수가 값을 가지고 있는 경우에 선언된 상수 또는 변수에 그 값을 할당하고 코드를 실행하는 작업을 한다.

 

>index 변수에 할당된 값이 언래핑되어 myvalue라는 임시 상수에 할당된다.

 

> myvalue는 if문 안에서만 유효한 상수이기 때문에  구문 실행이 끝나면 더이상 존재하지 않는다.

- 변수명이나 상수명을 옵셔널 변수명과 동일하게 사용해도 충돌이 발생하지 않는다.

 

if-let 구문

- 옵셔널 바인딩을 사용하지 않음

// 임시값의 사용이 불필요하게 됨
if let index = index {
	print(index)
}

// if-let 구문
if let index {
	print(index)
}

 

암묵적으로 언래핑되도록 옵셔널을 선언

- 옵셔널 선언시 물음표(?) 대신 느낌표(!)를 사용

var index: Int!

index = 3
var treeArray = ["Oak", "Pine", "Yew", "Birch"]

if index != nil {
	print(treeArray[index]
} else {
	// 값이 할당되지 않음
}