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
'2022_iOS 앱 개발자 워크숍 > 1, Swift 문법 복습' 카테고리의 다른 글
Swift : 인스턴스 타입 검사 ( is ) (0) | 2022.01.04 |
---|---|
Swift : 형변환 [ 업 캐스팅, 다운 캐스팅, as ] (0) | 2022.01.04 |
Swift : Implicity Unwrapped ( 암묵적 언래핑 ) (0) | 2022.01.03 |
Swift : Tuple (튜플) (0) | 2022.01.03 |
Swift : 데이터 타입 기초, 자료형의 종류와 크기 출력 (0) | 2022.01.03 |
댓글