Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 리액트최적화
- 상단 빈공간 제거
- C++
- featured-sliced-design
- 가로모드끄기
- 비동기함수
- 동기 함수 내에서 비동기 함수 호출
- react상태관리라이브러리
- 반응형 css
- 페이지이동함수
- 블로그업로드확인
- @environmentobject 프로퍼티 래퍼
- zustand
- LazyHGrid
- 세로모드끄기
- LazyVGrid
- react-router-dom
- zustand란
- react fsd
- navigationBar 숨기기
- GridItem
- 페이지전환
- 컴퓨터네트워크
- 리렌더링최적화
- SwiftUI Font
- @published 프로퍼티 래퍼
- @observedobject 프로퍼티 래퍼
- react hook
- BFS
- CSS
Archives
- Today
- Total
leebaek
[Swift] 데이터 타입 | 스위프트 옵셔녈 타입 본문
☆ [핵심만 골라배우는 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 {
// 값이 할당되지 않음
}
'개발 > Swift' 카테고리의 다른 글
[SwiftUI] View를 인자로 전달하는 메소드 생성 방법 (0) | 2024.01.09 |
---|---|
[SwiftUI] Font추가 | Custom Font 사용법 (0) | 2024.01.08 |
[Swift] 데이터 타입 | 튜플 (0) | 2023.12.27 |
[Swift] 데이터 타입 | 스위프트 변수, 상수, 타입애너테이션 (1) | 2023.12.27 |
[SwiftUI] NavigationView & NavigationLink (기본) (0) | 2023.11.23 |