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 }