728x90
반응형
기본 열거형
- 예시 코드에서 볼 수 있듯이
WeekDay (주간) 에 대한 데이터에서
월(mon) ~ 금(fri) 의 데이터만 존재해야 하는 경우 - 이를 문자열로 구현하는 경우
mom 이라는 오타 발샐 시
스위프트 문법 상 문제는 없기 때문에
어느 부분에서 문제가 발생했는지 찾기 어렵습니다. - 그러한 문제를 방지하기 위해
Enum(열거형)을 사용합니다.
import UIKit
// 요일을 한번 enum으로 만들어 보겠습니다.
enum WeekDay {
case mon
case tue
case wed
case thu
case fri
}
var today: WeekDay = .mon // mon
// var today2: String = "mom" // "mom" // mon 과 다르지만 오류는 발생하지 않음
// 미디어타입을 한번 enum으로 만들어 보겠습니다.
enum MediaType {
case audio
case video
}
var mediaType: MediaType = .audio // audio
파라미터 추가
- 예시 코드처럼
미디어 파일명에 대해서 각 미디어 타입을 정해주기 위해서
열거형을 사용할 수 있습니다. - 기본형을 사용하는 경우
각 형태를 모두 만들어줘야하지만 - 파라미터를 받을 수 있도록 열거형을 생성하여
이런 문제를 해결할 수 있습니다.
import UIKit
enum MediaType {
case audio(String)
case video(String)
}
var mp3: MediaType = .audio("test.mp3") // test.mp3
var h264: MediaType = .video("test.h264") // test.h264
응용
- 지금까지의 방법으로 열거형을 생성하고
사용하는 방법에 대해 알아보겠습니다. - 열거형은 반드시 switch-case 문을 통해 구분합니다.
- 조건문을 통해 해당 변수/상수가
어떤 형식을 가지고 있는지 구분하여
그에 따른 동작을 수행할 수 있습니다. - 아래 예시는
해당 변수가 어떤 형식의 미디어 파일일지 구분하고
파일형식과 파일명을 출력하는 예시입니다.
import UIKit
enum MediaType {
case audio(String)
case video(String)
}
var mp3: MediaType = .audio("test.mp3") // test.mp3
var h264: MediaType = .video("test.h264") // test.h264
switch mp3{
case .audio(let audio):
print("audio: \(audio)") // "audio: test.mp3\n"
case .video(let video):
print("video: \(video)")
}
728x90
반응형
'Swift' 카테고리의 다른 글
[ Swift ] 옵셔널 (0) | 2023.01.25 |
---|---|
[ Swift ] 반복문 (0) | 2023.01.23 |
[ Swift ] 조건문 (0) | 2023.01.20 |
[ Swift ] 배열과 딕셔너리 (0) | 2023.01.16 |
[ Swift ] 변수와 연산자 (0) | 2023.01.13 |