열거형은 관련된 값으로 이루어진 그룹을 공통의 형(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"
}
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>