본문 바로가기
Swift

SwiftUI + Combine MVVM 아키텍쳐 분석 - 3

by songmoro 2024. 11. 11.
728x90

Business Logic - View Model

  • 상위 뷰에서 주입, 하위 뷰에서는 ObservedObject로 받음
  • 뷰에서 extension으로 뷰 모델 클래스 정의, ObservableObject 채택
  • 상태에 관한 변수
    • Published 어노테이션
  • 네트워킹 등 불러오는 로직이 필요한 변수
    • enum Loadable
      • typealias LoadableSubject<Value> = Binding<Loadable<Value>>
      • .notRequested, .isLoading(), .loaded(), .failed(error)
        • case notRequested
        • case isLoading(last: T?, cancelBag: CancelBag)
        • case loaded(T)
        • case failed(Error)
  • init 시
    • container, appState 연결
    • 상태에 관한 변수 bind
  • side effect
    • 화면을 바꿀 수 있는 작업을 수행하는 함수
    • side effect로 마킹
    • container.services 내부 메서드 실행
      • Subject와 서비스에 필요한 매개변수 전달
    • 값 변경
      • isSheet = true
728x90