목록전체 글 (51)
J
Combine을 사용하여 동일한 네트워크 요청과 데이터 바인딩을 처리를 예제를 통해 알아보도록 하겠습니다.Combine은 Swift의 선언적 프로그래밍 방식으로 데이터 스트림을 처리하며, 네트워크 통신과 같은 비동기 작업에도 유용합니다.1. Network 통신 결과 Modelimport Foundationtypealias Markets = [Market] // Markets는 Market의 배열struct Market: Hashable, Decodable { let market, koreanName, englishName: String // 각 마켓 정보 enum CodingKeys: String, CodingKey { case market case koreanName..
Reducer어플리케이션의 현재 상태를 주어진 액션에 따라 다음 상태로 발전시키는 방법을 설명하고, 나중에 스토어에서 실행해야 할 Effect가 있다면 이를 반환하는 프로토콜입니다.선언protocol Reducer개요이 프로토콜을 준수하면 특정 기능의 도메인, 로직, 동작을 표현할 수 있습니다.여기서 도메인은 State와 Action을 통해 정의되며, 이들은 해당 구조체 내부에 중첩 타입으로 선언될 수 있습니다.struct Feature: Reducer { struct State { var count = 0 } enum Action { case decrementButtonTapped case incrementButtonTapped } // ...}리듀서 구현이제 기능의 로직을 정..
시작하기Composable Architecture를 프로젝트에 통합하고 첫 번째 애플리케이션을 작성하는 방법을 알아봅시다.Composable Architecture를 프로젝트에 추가하기SwiftPM 프로젝트에서 Composable Architecture를 사용하려면 Package.swift의 dependencies 섹션에 추가하고, 해당 라이브러리가 필요한 타겟에서 ComposableArchitecture를 지정해야 합니다.let package = Package( dependencies: [ .package( url: "", from: "1.0.0" ), ], targets: [ .target( name: "", dependencies: [ ..
🧘 시작하기 전에…저는 TCA를 최신 버전으로 다루다 보니 Environment보다는 DependencyValues를 사용하였는데요.TCA를 학습하는 과정에서 Environment에 대한 글은 많았는데 DependencyValues에 대한 내용은 부족해서 어려움이 많았습니다.또한 둘이 분명 외부 객체를 담당한다는 점에서 같은 역할을 하는 것 같은데 차이가 무엇인지 자세히 알고 싶어 직접 적어 봤습니다.🔍 Environment와 DependencyValues의 차이점Environment와 DependencyValues는 모두 의존성 주입(Dependency Injection)을 담당하는 개념이지만,최근 TCA의 업데이트로 Environment의 역할이 DependencyValues로 대체되면서 두 방식..

🧘 시작하기 전에…이전 글에서 버튼을 눌러 카운트를 증가 또는 감소시킬 수 있는 예제를 통해 최신 버전 TCA에 대해 간단히 설명했는데요.이번 글에서는 조금 더 심화적으로 Effect와 DependencyValues, 그리고 네트워크 통신을 진행할 경우를 알아보도록 하겠습니다.🔍 TCA의 Effect와 DependencyValues 설명TCA에서는 비동기 작업(네트워크 요청, 타이머, 데이터 저장 등)은 Reducer 내부에서 직접 실행할 수 없고, Effect를 사용하여 처리 해야 합니다.또한, 최신 TCA에서는 Environment 대신 DependencyValues를 사용하여 의존성을 주입(Dependency Injection, DI) 및 관리합니다.🔍 Effect란? (비동기 작업을 처리하는..
🧘 시작하기 전에…이번 글은 TCA에서 의존성 주입을 다룰 때 등장하는 Client에 대한 간단한 설명입니다.개인적으로는 의존성 주입에 대해 자세히 알아보기 전에 한 번 훑고 가면 좋을 것 같아 이렇게 먼저 작성해봅니다!📌 Client란?TCA에서 Client는 특정 기능(예: 네트워크 요청, 데이터베이스 접근, 파일 저장 등)을 추상화한 객체입니다.즉, 외부 시스템(서비스)와 상호작용하는 역할을 하는 구조체(또는 클래스)로, 의존성 주입(Dependency Injection)을 쉽게 하기 위해 사용됩니다.Client의 핵심 개념외부 의존성을 추상화 → API 요청, DB 접근 등을 직접 호출하는 대신, 이를 추상화한 Client를 사용하여 관리Mocking이 용이 → 테스트 시 실제 API를 호출하..

🧘 시작하기 전에…기존 글에서 TCA를 이루는 기본 요소(?)에 대해 알아보고 왔는데요.이번 글에서는 TCA의 핵심 개념과 최신 버전의 예제를 다뤄보겠습니다.학습하면서 가장 크게 느낀 점은, 많은 블로그 글과 ChatGPT 답변이 과거 버전을 기준으로 하고 있어 최신 버전을 설치했을 때 오류가…이에 학습 과정이 훨씬 어려웠는데, 이번 글을 통해 새롭게 학습하는 분들이 같은 어려움을 겪지 않도록 최신 버전을 기준으로 정리해보았습니다.🔍 TCA가 해결해주는 핵심 개념들(1) 상태 관리 🛠애플리케이션에서 데이터를 효율적으로 관리하는 방법을 제공.상태를 단순한 값 타입(struct)으로 정의하고 관리.여러 화면에서 동일한 상태를 공유할 수 있고, 한 곳에서 변경된 상태를 다른 곳에서도 즉시 반영 가능.예를..
🧘 시작하기 전에…TCA를 시작하기 전에 자주 언급되는 개념들이 있습니다.Redux 패턴의 영향을 받았다, 단방향 아키텍처를 따른다 등인데, 처음 접하면 이런 용어들이 오히려 이해를 방해할 수도 있습니다.그래서 먼저 이 개념들을 간단히 정리한 후, 본격적으로 TCA에 대해 알아보도록 하겠습니다!🔍 TCA가 Redux 패턴에서 영향을 받은 핵심 원칙TCA는 Redux 패턴에서 영향을 받아 "단일 상태(Single State)와 순수 함수 기반의 액션 처리(Pure Function Action Handling)" 를 따릅니다.지금부터 이게 무슨 의미인지 하나씩 쉽게 풀어서 설명해볼게요.1️⃣ 단일 상태(Single State)란?👉 앱의 모든 상태(State)를 하나의 struct 안에서 관리한다.이 ..