본문 바로가기

Swift

Swift - enum 열거형

열겨형이란? 

하나의 주제로 연관된 데이터들이 각 케이스로 구성된 자료형 객체 

다음 예제는 학교라는 주제에서 초,중,고 나뉨 

// 값이 없는 경우: 그냥 case 만 나눔
enum School {
    case elementary, middle, high
}
let yourSchool = School.high
print("\(yourSchool)")

// 각 case 각 값을 가진 경우
//.rawValue 로 값에 접근하다
enum Grade : Int {
    case first = 1
    case second = 2
}

let yourGrade = Grade.second
print("\(yourGrade.rawValue)")


// case 에 데이터를 우리가 넣어줌
// name 이 인자값이 된다
enum SchoolDetail {
    case elementary(name: String)
    case middle(name: String)
    case high(name: String)
    
    // 각 케이스에서 이름만 뽑는 함수
    func getName() -> String {
        switch self {
        case let .elementary(name):
            return name
        case let .middle(name):
            return name
        case let .high(name):
            return name
        }
    }
}

let yourMiddleSchoolName = SchoolDetail.middle(name: "코딩중")
print("\(yourMiddleSchoolName)")
// 이러면 케이스 통채로 출력
// middle(name: "코딩중") >>출력값

let yourMiddleSchoolName2 = SchoolDetail.middle(name: "코딩중")
print("\(yourMiddleSchoolName.getName())")
// 이름 뽑은 함수 호출함

 

딕셔너리, 배열 , 집합은 정의가 아닌 할당이다 

=> 수정이 쉽다,  할당값 자체를 타입으로 사용할 수 없다. 

열겨형은 객체 정의 시점에 같이 정의됨

=> 정의될 경우 컴파일이 인지하고 에러를 사전에 잡을 수 있다. 

 

사용하면 좋을때

1. 원치 않는 값이 잘못 입력되는 것을 막고 싶을때 (guard문으로도 할 수 있음)

2. 입력받을 값을 미리 특정할 수 있을 때

3. 제한된 값만을 선택하도록 할때

 

<활용>

정해지 위치에서만 소스타입을 가져오고 싶을때 열거형으로 정의하면 잘못가져오는 실수를 안할 수 있음 

ex) 이미지를 가져올때 카메라, 앨범 이런식으로 

'Swift' 카테고리의 다른 글

Swift - class VS struct  (0) 2022.06.10
Swift - Unwrap 옵셔널 변수  (0) 2022.06.10
Swift - 반복문  (0) 2022.06.10
Swift - if  (0) 2022.06.10
Swift - guard  (0) 2022.06.02