[iOS/Swift] ViewModel에서 enum으로 action 정의하기

·2024년 6월 19일

enum Action 정의

  • ViewModel에서 enum형태로 action(event)를 정의
  • ViewModel에서 알맞은 로직 수행
class ViewModel: ObservableObject {
    
    enum Action {
        case add 
        case delete
    }

    func send(_ action: Action) {
        switch action {
        case .add:
            print("add action")
        case .delete:
            print("delete action")
        }
    }
}
  • action 을 파라미터로 받는 send 메서드를 정의하여 모든 action에서 일어날 로직들을 명확하게 처리해 주었다.

view에서 action 호출

struct ContentView: View {
    @StateObject private var viewModel = ViewModel()

    var body: some View {
        VStack {
            Button {
                viewModel.send(.add)
            } label: {
                Text("add")
            }

            Button {
                viewModel.send(.delete)
            } label: {
                Text("delete")
            }
        }
        .padding()
    }
}
  • viewModel에서 send(action) 을 호출하여 원하는 로직 수행


직접 써본 후기!

  • ViewModel의 구조를 한눈에 파악할 수 있었음
    - RxSwift의 input-ouput 패턴을 사용했을 때처럼(사용 목적은 다르긴 하지만) ViewModel의 구조를 쉽게 파악할 수 있었다.

0개의 댓글