새소식

iOS/Swift

[Swift] Enum(열거형)

  • -
 참조 :  Swift 스위프트 프로그래밍 3판 Swift 5, 저자 야곰 (한빛미디어) , 
The Swift Programming Language Swift 5.6 Edition (iBooks)
(https://books.apple.com/kr/book/the-swift-programming-language-swift-5-6/id881256329)

 

 

열거형


- 연관된 항목들을 묶어서 표현할 수 있는 타입

- 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가

- 열거형 각 항목이 원시 값(Raw Value) 형태로 가질 수 있음

- 원시 값(rawValue) : (정수, 실수, 문자 타입 등의) 실제 값을 가지는 것

 

- 열거형을 사용하는 경우

  1. 제한된 선택지를 주고 싶을 때
  2. 정해진 값 외에는 입력받고 싶지 않을 때
  3. 예상된 입력 값이 한정 되어 있을 때

- switch 구문과 활용 

 

 

 

기본 열거형(Enum)


 

- 각 항목은 그 자체가 고유의 값

- 열거형 내의 항목(case)이 자신과 연관된 값을 가질 수 있음

 

//School 열거형 선언
enum School{
case primary  = "유치원"
    case elementary = "초등학교"
    case middle = "중학교"
    case high = "고등학교"
    case college = "대학"
    case university = "대학교"
    case graduate = "졸업"
}

//열거형 변수의 생성 및 값 변경
var highestEducationLevel: School = School.university
var highestEducationLevel: School = .university // 두 문장은 같은 표현

highestEducationLevel = .graduate // 값을 변경해줄 수 있음

 

- 항목도 원시값을 가질 수 있는데, 항목 옆에 타입을 명시하고 rawValue 프로퍼티를 통해 가져올 수 있음

 

let highestEducationLevel: School = School.university
print("저의 최종학력은 \(highestEducationLevel.rawValue) 졸업입니다.")
// 저의 최종학력은 대학교 졸업입니다.

enum WeekDays: Character{
	case mon = "월", case tue = "화", case wed = "수", case thu = "목", case fri = "금",
	case sat = "토", case sun = "일"
    }

let today: Weekdays = WeekDays.fri
print("오늘은 \(today.rawValue)요일 입니다.") // 오늘은 금요일입니다.

 

- 연관 값은 각 항목 옆에 소괄호(())로 묶어서 표현

- 열거형에 포함된 모든 케이스를 알아야 할 때 CaseIterable 프로토콜을 사용하여 모든 케이스의 컬렉션을 생성해줌

- @available 을 사용하여 플랫폼별로 사용 조건을 추가할 수 있음

 

 

 

 

순환 열거형(indirect)


- 열거형 항목의 연관 값이 열거형 자신의 값이고자 할 때 사용

- enum 키워드 앞에 indirect 키워드를 붙여 사용

 

 

 

비교 가능한 열거형(Comparable)


- 각 케이스를 비교 가능

 

 

 

 

 

728x90

'iOS > Swift' 카테고리의 다른 글

[Swift] 타입캐스팅  (0) 2022.07.03
[Swift] 옵셔널 체이닝  (0) 2022.07.01
[Swift] Dictionary 와 Set  (0) 2022.05.14
[Swift] 데이터 타입  (0) 2022.05.14
[Swift] Swift 기초  (0) 2022.05.12
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.