enum을 사용하는 이유
enum은 배열이나 딕셔너리와 다르게 정의해준 항목 값 외에는 추가/수정이 불가하기 때문에 다음과 같은 경우 사용 가능
- 제한된 선택지를 주고 싶을 때
- 정해진 값 외에는 입력받고 싶지 않을 때
- 예상된 입력 값이 한정되어 있을 때
기본 enum 선언
enum School{
case primary
case elementary
case middle
}
enum School{
case primary, elementary, middle
}
원시 값을 가지는 enum
enum School: String{
case primay = "유치원"
case elementary = "초등학교"
}
enum School: String{
case primary = "유치원", elementary = "초등학교"
}
원시 값을 사용하려면 rawValue 프로퍼티를 사용하면 된다
let edu: School = School.primary
print(edu.rawValue) // 초등학교
원시 값을 일부만 지정해주면 나머지는 자동 처리됨
enum School: String{
case primary = "유치원"
case elementary = "초등학교"
case middle
case high
}
let edu: School = School.middle
print(edu.rawValue) // middle <- case가 그대로 원시 값으로 들어옴
enum Numbers: Int{
case zero
case one
case ten = 10
}
print(Numbers.zero.rawValue) // 0 <- 첫 항목을 기준으로 0부터 순서대로 들어감
print(Numbers.one.rawValue) // 1
print(Numbers.ten.rawValue) // 10
원시 값을 갖는 enum은 원시 값을 통해 enum 변수 또는 상수를 생성할 수 있다
let edu = School(rawValue: "유치원") // primary
연관 값을 가지는 enum -> case(항목)가 자신과 연관된 값을 가질 수 있음
enum MainDish {
case pasta(taste: String)
case pizza(dough: Stiring, topping:String)
}
var dinner: MainDish = MainDish.pasta(taste: "크림)
dinner = .pizza(dough: "치즈", topping: "불고기)
enum PastaTaste{
case cream, tomata
}
enum PizzeDough{
case cheese, thin
}
enum PizzaTopping{
case peperomi, bacon
}
enum MainDIsh{
case pasta(taste: PastaTaste)
case pizza(dough: PizzaDough, topping: PizzaTopping)
}
var dinner = MaonDish.pasta(taste: PastaTaste.tomata)
dinner = .pizza(dough: PizzaDough.thin. topping: PizzaTopping.bacon)
'iOS > Swift' 카테고리의 다른 글
[Swift] 일급객체란? (0) | 2022.04.11 |
---|---|
[Swift] Optional(옵셔널)도 결국 Enum type(열거형 타입)이다 (0) | 2022.03.26 |
[Swift] 열거형 케이스 패턴에서 let 위치 차이점 (0) | 2022.03.25 |
[Swift] 프로퍼티(저장, 연산, 타입, 감시자) (0) | 2022.03.18 |
[Swift] 프로퍼티 접근자와 감시자는 동시에 재정의 할 수 없다 (0) | 2022.03.17 |