HIT해

[Swift 기초문법 - 62] Enum CaseIterable 본문

Swift/Swift 기초문법

[Swift 기초문법 - 62] Enum CaseIterable

힛해 2024. 8. 21. 00:25
728x90

CaseIterable이란?

CaseIterable은 Swift에서 열거형의 모든 케이스를 컬렉션처럼 다룰 수 있게 해주는 프로토콜이다.

이 프로토콜을 채택한 열거형은 자동으로 allCases 라는 속성을 가지게 되며, 이를 통해 열거형의 모든 케이스를 배열 형태로 접근할 수 있다.

 

기본 사용법

enum CompassPoint: CaseIterable {
    case north
    case south
    case east
    case west
}

 

이렇게 하면 CompassPoint.allCases 를 통해 열거형의 모든 케이스에 접근할 수 있다.

for direction in CompassPoint.allCases {
    print(direction)
}

 

배열로 만들기

allCases를 활용하여 열거형의 모든 케이스를 배열로 만들 수 있다.

let numberOfDirections = CompassPoint.allCases.count
print("총 \(numberOfDirections)개의 방향이 있습니다.")

 

 

switch 문에서의 활용

열거형의 모든 케이스를 확인하고자 할때 allCases를 활용할 수 있다.

enum Beverage: CaseIterable {
    case coffee, tea, juice, water
}

for beverage in Beverage.allCases {
    switch beverage {
    case .coffee:
        print("커피를 선택했습니다.")
    case .tea:
        print("차를 선택했습니다.")
    case .juice:
        print("주스를 선택했습니다.")
    case .water:
        print("물을 선택했습니다.")
    }
}

 

case에 저장된 값에 접근하기

프로토콜 String 선언을 해주고 map을 활용하면 값에 접근이 가능하다

import UIKit
import Foundation

enum Pet :String, CaseIterable{
    case cat = "고양이"
    case dog = "강아지"
    case bird = "참새"
}

let petNames : [String] = Pet.allCases.map{ $0.rawValue }