열거형은 관련된 값으로 이루어진 그룹을 공통의 형(type) 으로 선언해 형 안전성(type-safety)을 보장하는 방법으로 코드를 다룰 수 있게 해줍니다. Swift 에서는 case값이 string, character, interger 값들을 사용할 수 있습니다.

열거형은 1급 클래스형(first-class types)이어서 계산된 프로퍼티(computed properties)를 제공하거나 초기화를 지정하거나, 초기 선언을 확장해 사용할 수 있습니다.

즉, 같은 주제로 연관된 데이터들을 멤버로 구성하여 나타내는 자료형

예를 들어 아이돌 그룹안에 포지션이 (vocal, dance, rap) 이 있다. 이 포지션을 저장해 두어야한다면 type을 통해 저장할 수도 있다.

var idol1: String = "vocal"
var idol2: String = "dance"
var idol3: String = "rap"

입력할때마다 값을 직접 넣으면 vacla danse 이렇게 오타를 낼수 있는데, 가독성과 안전성이 떨어진다

이때 공통된 주제에 대하여 이미 정해놓은 입력 값만 선택해서 받고 싶을때 사용하는 것이 열거형

Enum은 값 형식으로 Stack에 저장되어 성능면에서도 향상된다.

<aside> ⭐ 열거형은 저장속성을 만들 수 없다. 타입저장속성은 만들 수 있다.

</aside>

아래 예시 참조!!

public enum MusicApi {
    static let requestUrl = "<https://itunes.apple.com/search?">
    static let mediaParam = "media=music"
}

열거형 문법 Enumeration Syntax

enum 키워드를 사용해 열거형을 정의

enum SomeEnumeration {

}

다음은 네가지 방향을 갖는 CompassPoint 열거형 선언의 예 입니다.

enum CompassPoint {
		case north
		case south
		case east
		case west
}

<aside> 💡 Swift에서 열거형은 생성될 때 각 case 별로 기본 integer값을 할당하지 않습니다. 위CompassPoint 를 예로 들면, north, south, east, west는 각각 암시적으로 0, 1, 2, 3값을 갖지 않습니다.(C나 Object-c는 다름) 대신 Swift에서 열거형의 각 case는 CompassPoint으로 선언된 온전한 값입니다.

</aside>