본문 바로가기
2022_iOS 앱 개발자 워크숍/1, Swift 문법 복습

Swift : Optional( 옵셔널 ) , Forced unwrapping( 강제 언래핑 ), Optional Binding( 옵셔널 바인딩 )

by 황민우 2022. 1. 3.

Optional ( 옵셔널 )

 = 자료형의 값을 Optional 값으로 저장하거나 값이 없는 상태(nil)를 나타냄

 

- 옵셔널 타입 변수를 선언하기 위해선 타입 선언부 뒤에 ? 문자를 씀
- 오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환함
   ▸ Int("10") 은 10이 아닌 Optional(10)을 리턴함.
   ▸ Int("G")는 정수 값을 반환할 수 없기때문에, nil을 반환 
   ▸ nil도 저장하려면 옵셔널 타입으로 선언해야함.

 

옵셔널을 사용하는 이유

 - 옵셔널 타입만이 값을 갖지 않는다는 의미의 nil을 가짐

 

특징
  1, nil 값을 옵셔널이 아닌 변수나 상수에 할당할 수 없음
  2, 옵셔널 변수에 초기값을 할당하지 않으면 자동으로 nil이 할당됨

 

Optional 예시

print(Int("10"))					// Optional(10)
print(Int("10"))!					// 10
print(Int("SeaGreen"))					// nil
print(Int("SeaGreen")!)					// 오류

실행 결과

 


Forced unwrapping ( 강제 언래핑 )

 = 옵셔널에 래핑된 값을 강제로 풀어주는 행위

 

강제 언래핑 예제 [ ! 사용 ] 1 - 1

var x : Int?
var y : Int = 0
x = 10
print(x)						// Optional(10)
print(x!)						// 10
print(y)						// 0
x = x+2							// 오류!
y = x

강제 언래핑 예제 [ ! 사용 ] 1 - 2

var x : Int?
x = 10
if x != nil {
    print(x!)					// 10
} else {
    print("nil")
}


var y : Int?
if y != nil {
    print(y!)
} else {
    print("nil")				// nil
}

 

강제 언래핑 예제 2 [옵셔널 바인딩 : Optional Binding]

var x : Int?
x = 10
if let xx = x {
    print(x,xx)					// Optional(10) 10 출력
} else {
    print("nil")
}



var x1 : Int?
if let xx = x1 {
    print(xx)
} else {
    print("nil")				// nil 출력
}

 


여러 옵셔널을 한 번에 언래핑하는 방법 [ 콤마 ]

var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let firstPet = pet1, let secondPet = pet2 {
    print(firstPet, secondPet)					// cat dog 출력
} 
else { 
   print("nil")
}

 

 

두 번의 옵셔널 바인딩을 한 번에 할 수 있게 변경 하는 법

 


강의 출처 : https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

댓글