HIT해

[iOS/TCA] @CasePathable 본문

Swift/UIKit 개발 노트

[iOS/TCA] @CasePathable

힛해 2024. 8. 30. 19:10
728x90

TCA Reducer 내부에서 열거형을 일치시킬때 자주 사용된다.

 

enum 타입에서 케이스 매칭을 보다 직관적으로 할 수 있게 도와준다.

 

또한 상태를 스코프로 다룰 수 있어 오류를 방지할 수 있다.

 

예시를 보자

 enum Action {
    case alert(PresentationAction<Alert>)
    case alertButtonTapped
    case confirmationDialog(PresentationAction<ConfirmationDialog>)
    case confirmationDialogButtonTapped

    @CasePathable
    enum Alert {
      case incrementButtonTapped
    }
    @CasePathable
    enum ConfirmationDialog {
      case incrementButtonTapped
      case decrementButtonTapped
    }
  }

 

이렇게 선언해두면 사용시에 어떻게 나오는지 보자.

 

 

 

또는 이렇게 사용할 수도 있다.

 

 case .alert(let alertAction):
        switch alertAction {
        case .incrementButtonTapped:
            // Handle incrementButtonTapped for alert
            return .none
        }
    case .confirmationDialog(let dialogAction):
        switch dialogAction {
        case .incrementButtonTapped:
            // Handle incrementButtonTapped for confirmation dialog
            return .none
        case .decrementButtonTapped:
            // Handle decrementButtonTapped for confirmation dialog
            return .none
        }
    }
}