
자신이 가지고 있는 모든 값들의 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에서는 사용할 수 없습니다.