728x90
반응형
모델과 액션 정의
TCA의 기본 구성 요소인 상태(State)와 액션(Action)을 정의합니다.
import Foundation
struct AppState: Equatable {
var isForeground: Bool = false
var isBackground: Bool = false
}
enum AppAction {
case setForeground(Bool)
case setBackground(Bool)
}
리듀서 정의
앱의 상태(State)와 액션(Action)을 기반으로 리듀서를 정의합니다.
import ComposableArchitecture
let appReducer = Reducer<AppState, AppAction, AppEnvironment> { state, action, environment in
switch action {
case .setForeground(let isForeground):
state.isForeground = isForeground
environment.checkAppLifecycle(isForeground: isForeground)
return .none
case .setBackground(let isBackground):
state.isBackground = isBackground
environment.checkAppLifecycle(isBackground: isBackground)
return .none
}
}
환경(Environment) 정의
Environment를 사용하여 앱의 라이프사이클을 체크할 수 있도록 정의합니다.
import ComposableArchitecture
struct AppEnvironment {
var checkAppLifecycle: (Bool, Bool) -> Void
}
앱 화면 구현
SwiftUI를 사용하여 앱 화면을 구현합니다.
import SwiftUI
import ComposableArchitecture
struct ContentView: View {
let store: Store<AppState, AppAction>
var body: some View {
WithViewStore(self.store) { viewStore in
VStack {
Text("Foreground: \(viewStore.isForeground.description)")
Text("Background: \(viewStore.isBackground.description)")
}
.onAppear {
viewStore.send(.setForeground(true))
}
.onChange(of: viewStore.isBackground) { isBackground in
viewStore.send(.setBackground(isBackground))
}
}
}
}
위의 코드를 사용하여 블로그 형식으로 TCA와 Environment를 활용하여 앱의 라이프사이클을 체크하는 샘플 앱을 만들 수 있습니다. 앱이 실행되면 앱의 라이프사이클 변화에 따라 콘솔에 출력됩니다. Happy coding! 😊
728x90
반응형
'Swift' 카테고리의 다른 글
Swift TCA (The Composable Architecture) 사용 후기 (0) | 2023.07.25 |
---|---|
TCA를 활용한 계산기 앱 및 테스트 코드 작성하기 (1) | 2023.07.25 |
Swift TCA와 UIKit으로 실시간 검색 앱 만들기 (0) | 2023.07.25 |
Swift로 구현하는 Clean Architecture 예제 (0) | 2023.07.20 |
Swift TCA와 Swinject를 활용한 Navigation 샘플 만들기 (0) | 2023.07.20 |