관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] switch문 CaseIterable, allCases 본문

iOS 기본 (swift)

[iOS - swift] switch문 CaseIterable, allCases

jake-kim 2021. 3. 14. 02:21

switch문의 CaseIterable 

  • CaseIterable 프로토콜은 allCases라는 static var를 사용할 수 있도록 제공

CaseIterable 프로토콜

  • 사용 방법 예시 - api를 request했을 때 실패한 경우, 응답값을 받은 상태이고 그 응답값이 미리 정한 enum타입에 속하는지 확인
  • enum 타입 정의 (CaseIterable 프로토콜 적용)
enum RequestFailType: String, CaseIterable {
    case unknown
    case network
}
  • api로 부터 failTypeId를 받은 상태 (테스트이므로 아래는 하드코딩)
let failTypeId = "unknown"
  • failTypeId가 정의한 enum타입에 속하는지 확인
    - allCases는 enum의 모든 타입이 담겨진 배열
RequestFailType.allCases // [RequestFailType.unknown, RequestFailType.network]

let isRequestCancelType = RequestFailType.allCases.map({ $0.rawValue }).contains(failTypeId)
print(isRequestCancelType) // true

 

Comments