본문 바로가기

전체 글

(16)
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..
SwiftUI + TCA 튜토리얼 1 - Feature + View SwiftUI + MVVM Input/Output 패턴을 사용해서 학습하다가 Apple 이 자체적으로 뷰에게 View + ViewModel 의 기능을 할 수 있도록 만들어주었기에 코드를 작성하면 작성할수록 뷰모델의 목적에 맞지 않는 점점 이상한 코드들이 쌓이기 시작해서 TCA 를 학습하고자 합니다. 우선 모든 것이 처음이니 저만의 단위대로 구조를 잘라서 작성해보겠습니다. 1. FeatureReducer Protocol 을 채택하는 Feature 라는 하나의 단위로State, Action, body 를 묶어서 사용하고 있습니다. 2. ViewFeature 라는 단위를 제네릭으로 갖는 store 를 프로퍼티로 가집니다.store 에 접근하여 send 로 액션을 방출할 수 있습니다. 프리뷰를 사용하여 View..