728x90
반응형
CaseIterable은 Swift의 프로토콜로, 열거형(enums)의 모든 케이스를 컬렉션 형태로 쉽게 순회하거나 접근할 수 있도록 해줍니다. 이 프로토콜을 채택하면 열거형의 모든 케이스를 배열(Array)로 얻을 수 있게 됩니다.
기본 사용법
열거형에 CaseIterable을 채택하면, 컴파일러가 자동으로 열거형의 모든 케이스를 allCases라는 배열 형태의 프로퍼티로 제공합니다.
enum Direction: CaseIterable {
case north
case south
case east
case west
}
위 코드는 Direction 열거형에 CaseIterable을 채택한 예시입니다.
allCases 사용
allCases는 자동으로 생성되는 배열로, 열거형의 모든 케이스를 순차적으로 접근할 수 있습니다.
for direction in Direction.allCases {
print(direction)
}
출력 결과:
north
south
east
west
주요 특징
- 자동 배열 생성: CaseIterable을 채택하면 열거형의 모든 케이스를 자동으로 배열로 제공합니다. allCases를 통해 배열에 접근할 수 있습니다.
- 케이스 순회: allCases를 통해 열거형의 모든 케이스를 쉽게 순회할 수 있어, 반복적인 작업을 간결하게 처리할 수 있습니다.
- 사용 제한: CaseIterable은 열거형에서 연관 값을 가지지 않는 경우에만 사용 가능합니다. 만약 열거형이 연관 값을 가진다면, 컴파일러는 자동으로 allCases를 생성해주지 않으며, 수동으로 작성해야 합니다.
예시 1: 기본적인 CaseIterable 사용
enum Beverage: CaseIterable {
case coffee, tea, juice
}
for drink in Beverage.allCases {
print(drink)
}
결과:
coffee
tea
juice
예시 2: allCases.count를 이용해 케이스 수 확인
enum Season: CaseIterable {
case spring, summer, autumn, winter
}
print("총 계절의 수: \(Season.allCases.count)")
결과:
총 계절의 수: 4
예시 3: 연관 값이 있는 경우는 CaseIterable 사용 불가
다음과 같이 연관 값이 있는 열거형에서는 CaseIterable을 사용할 수 없습니다.
enum Result: CaseIterable {
case success(data: String) // 연관 값이 있음
case failure(error: String)
}
위 코드는 컴파일 오류가 발생합니다. 이런 경우에는 allCases를 수동으로 구현해야 합니다.
결론
- CaseIterable은 열거형의 모든 케이스를 자동으로 배열 형태로 제공하여, 열거형의 케이스들을 쉽게 순회하거나 접근할 수 있게 해줍니다.
- 연관 값이 없는 열거형에서만 자동으로 사용 가능하며, 연관 값이 있는 열거형에서는 allCases를 직접 구현해야 합니다.
CaseIterable은 열거형을 순회하거나 사용해야 할 때 매우 유용한 기능입니다.
'Category > iOS' 카테고리의 다른 글
| ZStack이란? (0) | 2024.09.22 |
|---|---|
| enum(열거형)이란? (1) | 2024.09.22 |
| @StateObject와 @ObservedObject의 상태 관리 방식 차이 (1) | 2024.09.21 |
| ObservableObject와 @StateObject, @ObservedObject란? (0) | 2024.09.21 |
| SwiftUI의 @Binding이란? (0) | 2024.09.21 |