idghst.dev
article thumbnail
Published 2023. 1. 18. 09:00
[ Swift ] Enum Swift
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
profile

idghst.dev

@idghst.dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!