티스토리 뷰
The Composable Architecture를 만든 poinitfree github repo, WithViewStore 설명 링크 ▼
오늘은 ComposableArchitecture의 WithViewStore에 대해서 알아보겠습니다. 모든 내용은 위 문서를 참고하여 공부하고 기록하였습니다. 곧바로 포스팅 시작하겠습니다.
The Composable Architecture
WithViewStore 개요
WithViewStore는 TCA(The Composable Architecture)를 구성하는 요소인 State, Action, 그리고 상태 변경에 따라 업데이트 될 Content 세개의 제네릭 인자를 갖고 있습니다.
WithViewStore는 Store의 state에 맞게 뷰를 계산하기 위해 Store를 관찰 가능한 Observable viewStore로 변형해주는 구조체입니다. The Composable Architecture의 뷰는 일반적으로 WithViewStore로 깜싸여진 형태로 구성되게 되며, Observable한 viewStore에 맞게 뷰가 업데이트 됩니다. 또한 viewStore를 통해 뷰 상황에 맡는 Action를 전송(send)하기도 합니다.
WithViewStore Quick Help
WithViewStore 구조체의 생성자 선언형태는 위와 같습니다. State, Action 제네릭 인자 리스트를 갖는 Store 타입을 기본 인자로 받고, 그 외 isDuplicate, content 등의 인자를 갖고 있습니다. 각 인자에 대한 간략한 설명은 아래와 같습니다.
1) store : State, Action 제네릭 인자를 갖는 Store 타입 인자입니다.
2) isDuplicate : 두개의 State 값이 같은지를 결정하는 클로져 인자입니다. 두개의 State value 값이 동일하다면, 반복 View 계산은 제거된다고 합니다.
3) content : 인자는 viewStore 값, 반환값은 업데이트 될 Content 타입이 반환되는 일반적으로 이 Closure에 viewStore값에 따라 업데이트 될 뷰가 구성됩니다.
WithViewStore 사용가능 함수, debug
WithViewStore 구조체에서 사용가능한 함수가 있는데, debug(_:) 함수입니다. 메서드 명과 같이 현재 업데이트되는 viewStore값을 debugging하고자 할때 활용할 수 있습니다.
해당 메서드를 사용하면 viewStore의 업데이트 된 값을 출력할 수 있습니다. prefix 인자를 지정하면, 디버깅 구분을 위한 prefix가 함께 출력되어 보여지며, 만약 별도로 지정하지 않는다면, prefix 식별자는 출력되지 않고, viewStore 값만 출력됩니다.
pointfree의 The Composable Architecture 샘플 프로젝트 중 Todo 샘플앱 코드의 WithViewStore 구조체에 debug 메서드를 붙여 사용해본 예시입니다. 변경된 viewStore 값이 출력되며, prefix로 설정한 값이 함게 나오는 모습을 보실 수 있습니다.
오늘은 The Composable Architecture 구조를 사용하기 위해 사용되는 WithViewStore 구조체를 알아봤습니다. WithViewStore를 톨해 Store를 관찰 가능한 viewStore로 변환하여 뷰를 상태 변경에 맞게 변경가능하도록 할 수 있었습니다.
또한 debug(_:) 메서드로 viewStore 변경 값을 실시간으로 디버깅해볼 수도 있었습니다. 다음에도 공부하면서 남길만한 내용 포스팅 해보도록 하겠습니다. 피드백 댓글 언제든 환영합니다. 감사합니다.
'iOS 개발 > 개발자문서 정보' 카테고리의 다른 글
iOS TCA, ReducerProtocol 소개, 구성 및 적용 방법 (2) | 2023.01.11 |
---|---|
iOS Concurrency, AsyncSequence 개념, for try await 사용방법 (0) | 2022.10.22 |
swift The Composable Architecture, Reducer 개요 (0) | 2022.04.02 |
swift 문서, 제네릭 절 인자 리스트 문법 정의 및 사용방법 (0) | 2022.04.02 |
iOS13 지원 프로토콜, Identifiable 개발자문서 개요 (0) | 2022.03.27 |
- Total
- Today
- Yesterday
- 프로토콜
- 프로그래머스
- 프로그래머스swift
- publisher
- 자연어처리
- swift 문자열
- CoreML
- 부스트코스
- swift 기초
- 컬렉션
- 개발자문서
- Protocol
- Swift 알고리즘
- swift reduce
- swift
- createML
- 백준swift
- uikit
- Collection
- 김프매매
- 알고리즘문제
- 백준알고리즘
- swift string
- ios
- 알고리즘
- SwiftUI
- 스위프트
- swift문제
- swift언어
- swift알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |