본문 바로가기
iOS/Swift

[iOS/Swift] 알아두면 유용한, 열거형(Enumeration) ①

by iosdevlime 2022. 11. 5.

Enumeration, 열거형 타입에 대해 알아보기 전에

한 가지 예시를 먼저 살펴보도록 하겠습니다.

 


 

📌 스터디 그룹원의 닉네임과 취미를 Dictionary( String : [String]) 타입으로 정리합니다.

let myStudyGroupNickName : [String : [String]] = [
    "Lime" : ["Running", "Drinking"],
    "Jason" : ["Listening Music", "swimming" ],
    "Kate" : ["play Game", "Basketball"],
    "Happy" : ["Watch Movie", "namuWiki"]
]

 

📌 이후, Lime이란 닉네임을 가진 사람의 2번째 취미를 호출합니다.

  • 별도의 상수(limeHobbie)에 Key 값으로 "Lime"과 취미 배열의 index 값을 할당합니다.
let limeHobbie : [String]? = myStudyGroupNickName["Lime"]![1] // Running
print("Lime의 2번째 취미는 \(limeHobbie)")

 

 

📌 하지만, 아래와 같은 예외 상황이 발생할 수 있습니다.

  • Key값과 index값을 실수로 잘못 입력하게 된다면 오류가 발생합니다.
// key값 기입 오류
let limeHobbie : [String]? = myStudyGroupNickName["lime"]![1]

 // index값 기입 오류
let limeHobbie : [String]? = myStudyGroupNickName["Lime"]![2]

 


 

위 예시와 같이 복잡하거나, 많은 정보가 담긴 코드를 작성할 시,

입력하는 과정에서 실수가 종종 발생하게 됩니다. 

 

 

이와 같은 상황에 대처하기 위해,

 

① 사용자가 읽고, 작성하고, 해석하기 좋은 코드
실수에 대비하여 보다 직관적이고, 간결 명료한 코드

 

2가지 사항을 준수하여 코드를 작성하는 것을 권장합니다.

 

 

 

 


 

 

 

이후 연속해서 다룰 열거형, Enumeration이란 유형은 위 2가지 사항을 준수하는 자료형 타입입니다.

 

이번 포스팅에서는 Collection Type과의 비교를 통해

Enum이 어떻게 정의되고, 활용될 수 있는지 천천히 살펴보도록 하겠습니다. 

 

 

 

 

 

 

 

Enumeration(Enum) 이란?

연관있는 값들을 열거함으로서 사용자로 하여금 해당 값에 대해 접근하기 쉽도록 도와주는 자료형

 

Enum, 열거형 타입은 사용자가 미리 정해놓은 (변수)값선택하여 호출할 수 있다는 특징이 있으며,

오타와 실수를 줄여 안정성을 갖고, 코드의 직관성과 가독성을 높일 수 있다는 장점이 있습니다.

 

 

 

 

Enum의 기본형태

  • Enum은 'Type' 입니다!
    • 이전 포스팅에서 다룬 Optioanl(옵셔널) 또한 사실 Enum 타입의 자료형입니다.
  • 사용자가 미리 값을 정하기 위해, case 키워드 를 사용합니다. 
    • case별로 하나의 변수를 가지게 된다면, 쉼표(,) 를 사용하지 않고 나열합니다.
    • '요일'이나 '색상'과 같이 변하지 않는 값을 가진 그룹에서 주로 활용됩니다.
// 1. Case 별 변수 선언

enum 이름 {
	case 변수1
	case 변수2
	case 변수3
	...
}

// 2. Case 별 변수 다중 선언

enum 이름  {
	case (변수1, 변수2, 변수3)
	case (변수A, 변수B, 변수C) 
	...
}

 

 

 

case 호출

  • enum 이름 뒤에 점문법( . )을 활용하여 case를 호출할 수 있습니다.
    • 이러한 호출방법은 사용자의 입력 실수를 줄일 수 있다는 장점으로 작용합니다.
// Color라는 이름의 enum을 선언합니다.
// 여기서 Color는, 하나의 자료형으로 활용됩니다.

enum Color {
    case red
    case green
    case blue
}

myColor라는 임의상수에 'Color' 자료형(enum)을 할당한 후, 점문법 (.)으로 내부에 저장된 case에 접근myColor라는 임의상수에 'Color' 자료형(enum)을 할당한 후, 점문법 (.)으로 내부에 저장된 case에 접근
myColor라는 임의상수에 'Color' 자료형(enum)을 할당한 후, 점문법 (.)으로 내부에 저장된 case에 접근

 

 

 


 

다음 포스팅에 이어서,

 

enum 내 case의 초기값을 지정해주는 원시값(RawValue) 설정 방법과,

튜플(Tuple)을 활용한 다중 case값을 지정하는 연관값(Associated Value) 에 대해 살펴보겠습니다.

댓글