전체 글 (17) 썸네일형 리스트형 SwiftUI + TCA 튜토리얼 4 - Scope 하나의 스토어로 메인,서브 스토어 간 State, Action 을 연결지을 수 있는 Scope 에 대해 학습합니다. 우선 CounterFeature 를 CounterReducer 라는 이름으로 변경해서 사용했으며,메인 탭에서 사용할 CounterAppReducer 를 생성합니다. TabView 를 통해 각 Reducer 를 분리해서 사용할 수 있게끔 하려고 합니다.State 구조체에는 각각의 CounterReducer 의 State 를 인스턴스 프로퍼티로 갖고,Action 열거형도 마찬가지로 각각의 CounterReducer 의 Action 을 케이스로 갖습니다. 자, 그럼 CounterAppReducer 의 body 프로퍼티에는 Scope 를 사용합니다. 스코프는 KeyPath 를 사용하여 각 Stat.. SwiftUI + TCA 튜토리얼 3 - Timer + Cancellable 이번엔 다른 비동기 작업인 타이머를 사용합니다. Tiemr Button 을 생성합니다.isTimerRunning 상태에 따라 Text 가 변경되고, 탭하면 send 를 진행합니다. isTimerRunning, timerTick 추가 Composable Architecture의 강력한 기능 중 하나인 "효과 취소(effect cancellation)"를 활용할 수 있습니다. cancellable(id:cancelInFlight:) 메소드를 사용하여 어떤 효과도 취소 가능하게 표시할 수 있으며,ID를 제공함으로써 이를 수행할 수 있고, 나중에 cancel(id:)를 사용하여 해당 효과를 취소할 수 있습니다. Cancellable 이라는 것을 사용하기 위해 새로운 열거형을 생성합니다. 조건문으로 isTimer.. SwiftUI + TCA 튜토리얼 2 - Network 이번엔 네트워크 통신을 해봅시다. 누르면 통신작업을 진행할 FactButton 을 놓고,if 구문으로 isLoading 에 따른 ProgreeView 가 보이거나 Text 가 보이게끔 뷰를 놓았습니다. State: fact, isLoading 프로퍼티를 생성합니다.Action: factButtonTapped, factResponse 케이스를 생성합니다.기존 tapped case 도 잘 써주세요 factButtonTapped Action 을 감지했다면, .run 을 통해 네트워크 호출을 진행합니다.try await 구문으로 data 를 가져오고, 디코딩을 진행합니다. 이때 중요한 지점이 결과 값을 바로 state.fact 에 접근해서 변경할 수 없다는 점이며, 사진을 참고해주시면 되겠습니다.그렇기에 awa.. 이전 1 2 3 4 ··· 6 다음