티스토리 뷰
옵셔널이란?
-
값이 있을 수도, 없을 수도 있음을 나타내는 표현
-
변수 또는 상수의 값이 nil 일 수도 있다는 것을 의미
var name1: Optional<String> //명확한 옵셔널 표현
var name2: String? //축약한 옵셔널 표현
옵셔널추출
강제추출(forced unwrapping)
-
간단하지만 런타임 오류가 발생할 수 있기 때문에 가장 위험한 방법
-
옵셔널 값 뒤에 !를 붙여주면 강제추출 됨
-
값이 nil이 안 들어간다고 확신을 할 경우 사용할 수 있지만 사용하지 않는 것이 공부하는데 도움이 될 것 같다
var name: String? = "Name"
name = nil
print(name!) //런타임 에러 발생
옵셔널 바인딩
-
옵셔널에 값이 있는지 확인할 때 사용
-
옵셔널에 값이 있다면 옵셔널에서 추출한 값을 일정 블록 안에서 사용할 수 있는 변수, 상수로 할당해서 사용이 가능하게 해 줌
var name1: String? = "Name1"
name = nil
if let name = name1 {
print(name) //name이 nil의 경우엔 if문에 걸리지 않고 넘어감
}
var name2: String? = "Name2"
if let name = name1, name2 != nil { // ,를 활용해 두가지 변수는 활용할 수 있음
print("\(name)과 \(name2)")
}
암시적 추출 옵셔널
-
nil은 할당이 가능하지만 nil인 상태에서 접근하면 런타임 에러가 발생함
-
값의 정의는 여전히 옵셔널
var name1: String! = "Name1"
name1 = nil //nil 할당은 가능
print(name1) //런타임 에러 발생
if let name = name1 { //여전히 옵셔널이기 때문에 바인딩 가능
print(name)
}
'Swift' 카테고리의 다른 글
[부스트코스-iOS]추가 공부2 - 오토레이아웃 (0) | 2021.03.10 |
---|---|
[부스트코스-iOS]추가 공부1 - 앱시닝, 에셋 카탈로그 (0) | 2021.03.03 |
[Firebase]토이프로젝트 (1) - Storage (0) | 2020.11.25 |
Xcode 스토리보드 사용하지 않는 방법 (0) | 2020.11.24 |
프로그래밍 패러다임 (0) | 2020.07.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- apple
- DP
- 부스트코스
- 백준
- Human Interface Guideline
- Swift
- Human Interface Guidelines
- MVC
- 알고리즘
- 오토레이아웃
- Firebase
- HIG
- UIView
- storage
- 분할정복
- HumanInterfaceGuidelines
- ios
- 디자인패턴
- 싱글톤
- 온라인저지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함