열거형은 관련된 값으로 이루어진 그룹을 공통의 형으로(type) 선언해 형 안전성(type-safety)을 보장하는 방법으로 코드를 다룰 수 있게 해줍니다. C나 Objective-C가 Integer값들로 열거형을 구성한 것에 반해 Swift에서는 case값이 string, character, integer, floting 값들을 사용할 수 있습니다. 열거형은 1급 클래스 형(first-class types)이어서 계산된 프로퍼티(computed properties)를 제공하거나 초기화를 지정하거나, 초기 선언을 확장해 사용할 수 있습니다.
쉽게 말해 변수를 선언하는데 변수 명이 겹쳐질 수도 있고 너무 많아져서 헷깔릴 수 있다.
그래서 좀 더 큰 틀을 잡아서 헷깔리지 않고 중복 되지 않게 사용할 수 있도록
라벨을 붙여준다고 생각하면 된다.
[Enum 사용법]
enum School {
case elementary
case middle
case high
}
각 case 별 선언해서 사용해도 되고
enum School2 {
case elementary , middle , high
}
이와 같이 한번에 작성해도 된다 .
C나 Objective-C 와는 다르게 Swift에서 열거형은 생성될 때 각 case 별로 기본 integer값을 할당하지 않습니다. 위 Scholl를 예로 들면, elementary, middle,high 는 각각 암시적으로 0, 1, 2값을 갖지 않습니다. 대신 Swift에서 열거형의 각 case는 School으로 선언된 온전한 값입니다.
/// 상수 값 변경 x
let yourSchool = School.high
print("yourSchool : \(yourSchool)")
[결과]
yourSchool : high
[값을 넣어주기]
enum Grade : Int {
case first = 1
case second = 2
}
let yourGrade = Grade.second
print("yourGrade : \(yourGrade)")
print("yourGrade : \(yourGrade.rawValue)")
[결과]
yourGrade : second
yourGrade : 2
rawValue = > 해당 가지고 있는 값을 출력한다.
[함수 만들기]
num SchoolDetail {
case elementary(name : String)
case middle(name : String)
case high(name : String)
func getName() -> String {
switch self {
case.elementary(let name):
return name
case.middle(let name):
return name
case.high(let name):
return name
}
}
}
let yourMiddleSchoolName = SchoolDetail.middle(name : "월성중학교")
print("yourMiddleSchoolName : ", yourMiddleSchoolName)
print("yourMiddleSchoolName : ", yourMiddleSchoolName.getName())
enum 안에 함수도 생성할 수 있습니다. 호출 시에 입력한 name 값만 반환하여 출력해줍니다.
[결과]
yourMiddleSchoolName : middle(name: "월성중학교")
yourMiddleSchoolName : 월성중학교
'App Dev > iOS' 카테고리의 다른 글
iOS Swift 함수 매개변수 사용 방법 ( 변수명 변경, 생략) (0) | 2023.04.03 |
---|---|
iOS Swift <T> Generic 제네릭 사용법 (0) | 2023.03.28 |
iOS Swift 옵셔널 변수를 Unwrapping 하는 두가지 방법 (0) | 2023.03.27 |
iOS Swift Foreach 반복문 기초문법 사용법 알아봅시다 (0) | 2023.03.27 |
iOS SwiftUI Webview 를 띄우기 위한 Xcode 14.x 사전 세팅 및 개발 (0) | 2023.03.09 |
iOS SwiftUI @State 문법 어떻게 사용하면 될까? (0) | 2023.03.09 |