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)
- enum Loadable
- init 시
- container, appState 연결
- 상태에 관한 변수 bind
- side effect
- 화면을 바꿀 수 있는 작업을 수행하는 함수
- side effect로 마킹
- container.services 내부 메서드 실행
- Subject와 서비스에 필요한 매개변수 전달
- 값 변경
- isSheet = true
728x90
'Swift' 카테고리의 다른 글
SwiftUI + Combine MVVM 아키텍쳐 분석 - 5 (0) | 2024.11.11 |
---|---|
SwiftUI + Combine MVVM 아키텍쳐 분석 - 4 (0) | 2024.11.11 |
SwiftUI + Combine MVVM 아키텍쳐 분석 - 2 (0) | 2024.11.08 |
SwiftUI: SwiftUI + Combine MVVM 아키텍쳐 분석 - 1 (0) | 2024.10.21 |
SwiftUI: 시트, 모디파이어 (0) | 2024.10.21 |