자신이 가지고 있는 모든 값들의 Collection을 제공하는 Type
일반적으로, CaseIterable
을 따르는 타입은 Associated value가 없는 Enumeration입니다. 이 프로토콜을 따르는 Enumeration에서 allCases
속성에 접근 하면 모든 case를 포함하는 collection을 얻을 수 있습니다.
아래와 같이 CaseIterable
을 따르는 Enumeration CompassDirection
은 north
, south
, east
, west
4개의 case를 가지며, allCases
속성을 출력하면 ["north", "south", "east", "west"]
가 출력됩니다.
enum CompassDirection: CaseIterable {
case north, south, east, west
}
print("There are \(CompassDirection.allCases.count) directions.")
// Prints "There are 4 directions."
let caseList = CompassDirection.allCases
.map({ "\($0)" })
.joined(separator: ", ")
// caseList == "north, south, east, west"
CaseIterable
의 경우 Associated Value혹은 @available attribute를 사용하는 속성값이 있는 Enumeration에서는 사용할 수 없습니다.