티스토리 뷰
enum은 타입이므로 대문자 카멜케이스를 사용하여 정의합니다.
Swift의 열거형은 각 case 자체가 고유의 값입니다.
enum 이름 {
case 이름1
case 이름2
case 이름3, 이름4, 이름5 // ,로 구분해 선언 가능
}
// 열거형 생성
enum Weekday {
case mon
case tue
case wed
case thu,fri,sat,sun
}
// 열거형 사용
var day: Weekday = Weekday.mon
// 타입이 명확하다면 .case 표현도 가능
day = .tue
print(day) // tue 출력
- case 에 모든 값을 구현하면 , Default 를 구현하지 않아도 됩니다.
-하나의 case 라도 구현하지 않으면 Default 를 포함해야합니다.
// default 없이 모든 case 구현
switch day {
case .mon, .tue, .wed, .thu:
print("평일")
case .fri:
print("불금")
case .sat, .sun:
print("주말")
}
// default 포함
switch day {
case .fri:
print("불금")
case .sat, .sun:
print("주말")
default:
print("평일")
}
- 열거형의 rawValue는 case별로 다른 값을 가져야합니다.
- 자동으로 1이 증가된 값이 할당됩니다.
enum Fruit: Int {
case apple = 0
case grape = 1
case peach //자동으로 rawValue에 2 할당됨
}
print("Fruit.peach.rawValue == \(Fruit.peach.rawValue)") // Fruit.peach.rawValue == 2 출력
- 정수타입 뿐 아니라 , Hashable 을 따르는 모든 타입이 원시값의 타입으로 지정될 수 있습니다.
- rawValue를 지정하지 않은 case는 case 이름을 rawValue로 사용합니다.
enum School: String {
case elementary = "초등"
case middle = "중등"
case high = "고등"
case university
}
print("School.middle.rawValue == \(School.middle.rawValue)")
// School.middle.rawValue == 중등 출력
print("School.university.rawValue == \(School.university.rawValue)")
//rawValue를 입력하지 않은 case
// School.middle.rawValue == university 출력
- Swift 의 열거형은 메서드를 포함할 수 있습니다.
enum Weekday {
case mon
case tue
case wed
case thu,fri,sat,sun
func printMessage(){
switch self {
case .mon, .tue, .wed, .thu:
print("평일")
case .fri:
print("불금")
case .sat, .sun:
print("주말")
}
}
}
Weekday.mon.printMessage() // "평일" 출력
* [부스트코스] iOS 프로그래밍을 위한 스위프트 기초 학습 후 정리한 내용입니다.
'iOS > Swift' 카테고리의 다른 글
Swift 문법 (11) - 클로저 (Closure) 고급 (0) | 2020.12.13 |
---|---|
Swift 문법 (10) - 클로저 (Closure) (0) | 2020.12.09 |
Swift 문법 (8) - 구조체(Struct), 클래스(Class) (0) | 2020.12.07 |
Swift 문법 (7) - 옵셔널 (0) | 2020.12.06 |
Swift 문법 (6) - 반복문 (0) | 2020.12.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SWEA
- infallible
- blendshapes
- Swift
- DispatchQueue
- 프로그래머스
- ios
- Neo4j
- C++
- blendshape
- GraphDB
- ARKit
- coreml
- Lottie
- SwiftUI
- rxswift
- 알고리즘
- rxswift6
- mergesort
- cocoapods
- 백준
- Reactivex
- Kotlin
- disposeBag
- 코코아팟
- 카카오인턴십
- boj
- 백준온라인저지
- 안드로이드
- bounds
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함