CHAPTER 01 시작하기_1
1.1 스위프트 프로그래머에게 2
1.2 스위프트가 처음인 프로그래머에게 2
1.3 소스 코드 다운로드 3
1.4 피드백 3
1.5 오탈자 3
CHAPTER 02 애플 개발자 프로그램 가입하기_4
2.1 Xcode 11과 iOS 13 SDK 다운로드하기 4
2.2 애플 개발자 프로그램 4
2.3 애플 개발자 프로그램에 등록할 시점 5
2.4 애플 개발자 프로그램에 등록하기 6
2.5 요약 7
CHAPTER 03 Xcode 11과 iOS 13 SDK 설치하기_8
3.1 macOS 버전 확인하기 8
3.2 Xcode 11과 iOS 13 SDK 설치하기 9
3.3 Xcode 시작하기 9
3.4 애플 아이디를 Xcode 설정에 추가하기 10
3.5 개발자 인증서와 배포 인증서 11
CHAPTER 04 Xcode 11 플레이그라운드_12
4.1 플레이그라운드란? 12
4.2 새로운 플레이그라운드 생성하기 13
4.3 스위프트 플레이그라운드 예제 기초 14
4.4 결과 보기 17
4.5 서식 있는 텍스트 주석 추가하기 18
4.6 여러 개의 플레이그라운드 페이지로 작업하기 20
4.7 플레이그라운드에서 UIKit으로 작업하기 21
4.8 플레이그라운드에 리소스 추가하기 22
4.9 향상된 라이브 뷰로 작업하기 24
4.10 요약 26
CHAPTER 05 스위프트 데이터 타입, 상수, 그리고 변수_27
5.1 스위프트 플레이그라운드 사용하기 28
5.2 스위프트 데이터 타입 28
5.3 스위프트 변수 33
5.4 스위프트 상수 34
5.5 상수와 변수 선언하기 34
5.6 타입 선언과 타입 추론 35
5.7 스위프트 튜플 36
5.8 스위프트 옵셔널 타입 37
5.9 타입 캐스팅과 타입 검사 41
5.10 요약 44
CHAPTER 06 스위프트 연산자와 표현식_45
6.1 스위프트 표현식 구문 45
6.2 기본 할당 연산자 46
6.3 스위프트 산술 연산자 46
6.4 복합 할당 연산자 47
6.5 비교 연산자 48
6.6 불리언 논리 연산자 49
6.7 범위 연산자 49
6.8 삼항 연산자 51
6.9 비트 연산자 51
6.10 복합 비트 연산자 55
6.11 요약 56
CHAPTER 07 스위프트의 제어 흐름_57
7.1 반복 제어 흐름 57
7.2 스위프트 for-in 구문 58
7.3 repeat ... while 반복문 60
7.4 반복문에서 빠져나오기 60
7.5 continue 구문 61
7.6 조건부 흐름 제어 62
7.7 if 구문 사용하기 62
7.8 if ... else ... 구문 사용하기 63
7.9 if ... else if ... 구문 사용하기 63
7.10 guard 구문 64
7.11 요약 65
CHAPTER 08 스위프트의 switch 구문_66
8.1 왜 switch 구문을 사용하나? 66
8.2 switch 구문 사용하기 66
8.3 스위프트의 switch 구문 예제 67
8.4 case 구문 결합하기 68
8.5 switch 구문에서 범위 매칭하기 69
8.6 where 구문 사용하기 69
8.7 fallthrough 70
8.8 요약 71
CHAPTER 09 스위프트 5의 함수, 메서드, 클로저 개요_72
9.1 함수란 무엇인가? 72
9.2 메서드란 무엇인가? 73
9.3 스위프트 함수를 선언하는 방법 73
9.4 단일 표현식에서의 암묵적 반환 74
9.5 스위프트 함수 호출하기 75
9.6 반환값 처리하기 75
9.7 지역 매개변수명과 외부 매개변수명 75
9.8 함수에 디폴트 매개변수 선언하기 77
9.9 여러 결괏값 반환하기 77
9.10 가변개수 매개변수 78
9.11 변수인 매개변수 79
9.12 입출력 매개변수로 작업하기 79
9.13 매개변수인 함수 81
9.14 클로저 표현식 83
9.15 스위프트의 클로저 85
9.16 요약 85
CHAPTER 10 스위프트의 객체지향 프로그래밍 기초_86
10.1 객체란 무엇인가? 86
10.2 클래스란 무엇인가? 87
10.3 스위프트 클래스 선언하기 87
10.4 클래스에 인스턴스 프로퍼티 추가하기 88
10.5 메서드 정의하기 88
10.6 클래스 인스턴스 선언하기와 초기화하기 90
10.7 클래스 인스턴스 초기화하기와 소멸하기 90
10.8 메서드 호출하기와 프로퍼티 접근하기 91
10.9 저장 프로퍼티와 연산 프로퍼티 92
10.10 지연 저장 프로퍼티 94
10.11 스위프트에서 self 사용하기 95
10.12 스위프트 프로토콜 이해하기 96
10.13 불투명 반환 타입 98
10.14 요약 100
CHAPTER 11 스위프트의 서브클래싱과 익스텐션의 개요_101
11.1 상속, 클래스, 그리고 하위 클래스 101
11.2 스위프트 상속 예제 102
11.3 하위 클래스의 기능 확장하기 103
11.4 상속받은 메서드 오버라이딩하기 104
11.5 하위 클래스 초기화하기 105
11.6 SavingsAccount 클래스 사용하기 106
11.7 스위프트 클래스 익스텐션 106
11.8 요약 107
CHAPTER 12 스위프트 구조체_108
12.1 스위프트 구조체 개요 108
12.2 값 타입 vs. 참조 타입 109
12.3 구조체와 클래스는 언제 사용하는가? 112
12.4 요약 112
CHAPTER 13 스위프트 프로퍼티 래퍼_113
13.1 프로퍼티 래퍼 이해하기 113
13.2 간단한 프로퍼티 래퍼 예제 114
13.3 여러 변수와 타입 지원하기 116
13.4 요약 119
CHAPTER 14 스위프트의 배열과 딕셔너리 컬렉션으로 작업하기_120
14.1 가변형 컬렉션과 불변형 컬렉션 120
14.2 스위프트 배열 초기화 120
14.3 스위프트 배열로 작업하기 122
14.4 배열 항목 섞기와 무작위로 가져오기 123
14.5 배열에 항목 추가하기 124
14.6 배열 반복하기 124
14.7 타입이 혼합된 배열 생성하기 125
14.8 스위프트 딕셔너리 컬렉션 126
14.9 스위프트 딕셔너리 초기화 127
14.10 시퀀스 기반의 딕셔너리 초기화 128
14.11 딕셔너리 항목 개수 128
14.12 딕셔너리 항목 접근하기와 갱신하기 129
14.13 딕셔너리 항목 추가하기와 제거하기 129
14.14 딕셔너리 반복 130
14.15 요약 130
CHAPTER 15 스위프트의 에러 핸들링 이해하기_131
15.1 에러 핸들링 이해하기 131
15.2 에러 타입 선언하기 132
15.3 에러 던지기 132
15.4 에러를 던지는 메서드와 함수 호출하기 134
15.5 에러 객체에 접근하기 135
15.6 에러 캐칭 비활성화하기 135
15.7 defer 구문 사용하기 135
15.8 요약 136
CHAPTER 16 SwiftUI 개요_137
16.1 UIKit과 인터페이스 빌더 138
16.2 SwiftUI의 선언적 구문 138
16.3 SwiftUI는 데이터 주도적이다 139
16.4 SwiftUI vs. UIKit 140
16.4 요약 142
CHAPTER 17 SwiftUI 모드로 Xcode 이용하기_143
17.1 Xcode 11 시작하기 143
17.2 SwiftUI 프로젝트 생성하기 144
17.3 SwiftUI 모드의 Xcode 145
17.4 프리뷰 캔버스 147
17.5 프리뷰 고정하기 148
17.6 화면 설계 수정하기 149
17.7 에디터 콘텍스트 메뉴 152
17.8 여러 디바이스에서 미리보기 153
17.9 시뮬레이터에서 앱 실행하기 156
17.10 실제 iOS 디바이스에서 앱 실행하기 156
17.11 디바이스와 시뮬레이터 관리하기 159
17.12 네트워크 테스트 활성화하기 159
17.13 빌드 에러 처리하기 160
17.14 애플리케이션 성능 모니터링 160
17.15 사용자 인터페이스 레이아웃 계층구조 살펴보기 161
17.16 요약 164
CHAPTER 18 기본 SwiftUI 프로젝트 분석_165
18.1 예제 프로젝트 생성하기 165
18.2 UIKit과 SwiftUI 166
18.3 AppDelegate.swift 파일 166
18.4 SceneDelegate.swift 파일 167
18.5 ContentView.swift 파일 168
18.6 Assets.xcassets 169
18.7 Info.plist 169
18.8 LaunchScreen.storyboard 169
18.9 요약 169
CHAPTER 19 SwiftUI로 커스텀 뷰 생성하기_170
19.1 SwiftUI 뷰 170
19.2 기본 뷰 생성하기 171
19.3 뷰 추가하기 172
19.4 하위 뷰로 작업하기 174
19.5 프로퍼티로서의 뷰 175
19.6 뷰 변경하기 176
19.7 텍스트 스타일로 작업하기 176
19.8 수정자 순서 178
19.9 커스텀 수정자 179
19.10 기본적인 이벤트 처리 180
19.11 onAppear 메서드와 onDisappear 메서드 181
19.12 커스텀 컨테이너 뷰 만들기 181
19.13 요약 183
CHAPTER 20 SwiftUI 스택과 프레임_184
20.1 SwiftUI 스택 184
20.2 Spacer, alignment, 그리고 padding 187
20.3 컨테이너의 자식 뷰 제한 189
20.4 텍스트 줄 제한과 레이아웃 우선순위 190
20.5 SwiftUI 프레임 192
20.6 frame과 GeometryReader 194
20.7 요약 195
CHAPTER 21 상태, Observable 객체, 그리고 Environment 객체로 작업하기_196
21.1 상태 프로퍼티 197
21.2 상태 바인딩 199
21.3 Observable 객체 200
21.4 Environment 객체 202
21.5 요약 204
CHAPTER 22 SwiftUI 예제 튜토리얼_205
22.1 예제 프로젝트 생성하기 205
22.2 프로젝트 살펴보기 207
22.3 레이아웃에 VStack 추가하기 208
22.4 스택에 슬라이더 뷰 추가하기 209
22.5 상태 프로퍼티 추가하기 210
22.6 Text 뷰에 수정자 추가하기 211
22.7 회전과 애니메이션 추가하기 212
22.8 스택에 TextField 추가하기 214
22.9 색상 피커 추가하기 215
22.10 레이아웃 정리하기 216
22.11 요약 219
CHAPTER 23 Observable 객체와 Environment 객체 튜토리얼_220
23.1 ObservableDemo 프로젝트에 대하여 220
23.2 프로젝트 생성하기 221
23.3 Observable 객체 추가하기 221
23.4 ContentView 레이아웃 설계하기 222
23.5 두 번째 뷰 추가하기 224
23.6 내비게이션 추가하기 225
23.7 Environment 객체 사용하기 226
23.8 요약 228
CHAPTER 24 스택 정렬과 정렬 가이드_229
24.1 컨테이너 정렬 229
24.2 정렬 가이드 232
24.3 정렬 가이드 도구 사용하기 235
24.4 커스텀 정렬 타입 236
24.5 스택 정렬 교차하기 239
24.6 ZStack 커스텀 정렬 241
24.7 요약 245
CHAPTER 25 SwiftUI 리스트와 내비게이션_246
25.1 SwiftUI 리스트 246
25.2 SwiftUI 동적 리스트 248
25.3 NavigationView와 NavigationLink 252
25.4 편집 가능하게 만들기 253
25.5 요약 256