SwiftUI (16) 썸네일형 리스트형 [SwiftUI] SwiftUI + TCA: Environment vs. DependencyValues 🧘 시작하기 전에…저는 TCA를 최신 버전으로 다루다 보니 Environment보다는 DependencyValues를 사용하였는데요.TCA를 학습하는 과정에서 Environment에 대한 글은 많았는데 DependencyValues에 대한 내용은 부족해서 어려움이 많았습니다.또한 둘이 분명 외부 객체를 담당한다는 점에서 같은 역할을 하는 것 같은데 차이가 무엇인지 자세히 알고 싶어 직접 적어 봤습니다.🔍 Environment와 DependencyValues의 차이점Environment와 DependencyValues는 모두 의존성 주입(Dependency Injection)을 담당하는 개념이지만,최근 TCA의 업데이트로 Environment의 역할이 DependencyValues로 대체되면서 두 방식.. [SwiftUI] SwiftUI + TCA: Effect? DependencyValues? (예제 포함) 🧘 시작하기 전에…이전 글에서 버튼을 눌러 카운트를 증가 또는 감소시킬 수 있는 예제를 통해 최신 버전 TCA에 대해 간단히 설명했는데요.이번 글에서는 조금 더 심화적으로 Effect와 DependencyValues, 그리고 네트워크 통신을 진행할 경우를 알아보도록 하겠습니다.🔍 TCA의 Effect와 DependencyValues 설명TCA에서는 비동기 작업(네트워크 요청, 타이머, 데이터 저장 등)은 Reducer 내부에서 직접 실행할 수 없고, Effect를 사용하여 처리 해야 합니다.또한, 최신 TCA에서는 Environment 대신 DependencyValues를 사용하여 의존성을 주입(Dependency Injection, DI) 및 관리합니다.🔍 Effect란? (비동기 작업을 처리하는.. [SwiftUI] SwiftUI + TCA: Client 훑고 가기… 🧘 시작하기 전에…이번 글은 TCA에서 의존성 주입을 다룰 때 등장하는 Client에 대한 간단한 설명입니다.개인적으로는 의존성 주입에 대해 자세히 알아보기 전에 한 번 훑고 가면 좋을 것 같아 이렇게 먼저 작성해봅니다!📌 Client란?TCA에서 Client는 특정 기능(예: 네트워크 요청, 데이터베이스 접근, 파일 저장 등)을 추상화한 객체입니다.즉, 외부 시스템(서비스)와 상호작용하는 역할을 하는 구조체(또는 클래스)로, 의존성 주입(Dependency Injection)을 쉽게 하기 위해 사용됩니다.Client의 핵심 개념외부 의존성을 추상화 → API 요청, DB 접근 등을 직접 호출하는 대신, 이를 추상화한 Client를 사용하여 관리Mocking이 용이 → 테스트 시 실제 API를 호출하.. [SwiftUI] SwiftUI + TCA: 최신 버전 TCA의 동작 과정 (예제 포함) 🧘 시작하기 전에…기존 글에서 TCA를 이루는 기본 요소(?)에 대해 알아보고 왔는데요.이번 글에서는 TCA의 핵심 개념과 최신 버전의 예제를 다뤄보겠습니다.학습하면서 가장 크게 느낀 점은, 많은 블로그 글과 ChatGPT 답변이 과거 버전을 기준으로 하고 있어 최신 버전을 설치했을 때 오류가…이에 학습 과정이 훨씬 어려웠는데, 이번 글을 통해 새롭게 학습하는 분들이 같은 어려움을 겪지 않도록 최신 버전을 기준으로 정리해보았습니다.🔍 TCA가 해결해주는 핵심 개념들(1) 상태 관리 🛠애플리케이션에서 데이터를 효율적으로 관리하는 방법을 제공.상태를 단순한 값 타입(struct)으로 정의하고 관리.여러 화면에서 동일한 상태를 공유할 수 있고, 한 곳에서 변경된 상태를 다른 곳에서도 즉시 반영 가능.예를.. [SwiftUI] SwiftUI + TCA : Redux 패턴 영향? 단방향? 🧘 시작하기 전에…TCA를 시작하기 전에 자주 언급되는 개념들이 있습니다.Redux 패턴의 영향을 받았다, 단방향 아키텍처를 따른다 등인데, 처음 접하면 이런 용어들이 오히려 이해를 방해할 수도 있습니다.그래서 먼저 이 개념들을 간단히 정리한 후, 본격적으로 TCA에 대해 알아보도록 하겠습니다!🔍 TCA가 Redux 패턴에서 영향을 받은 핵심 원칙TCA는 Redux 패턴에서 영향을 받아 "단일 상태(Single State)와 순수 함수 기반의 액션 처리(Pure Function Action Handling)" 를 따릅니다.지금부터 이게 무슨 의미인지 하나씩 쉽게 풀어서 설명해볼게요.1️⃣ 단일 상태(Single State)란?👉 앱의 모든 상태(State)를 하나의 struct 안에서 관리한다.이 .. [SwiftUI] @AppStorage `@AppStorage`SwiftUI에서 제공하는 속성 래퍼로, UserDefaults와 연동하여 간편하게 데이터를 저장하고 관리 가능.`@AppStorage` 사용 시 특정 데이터가 앱 전체에서 공유되고, 앱을 종료해도 유지되는 속성을 쉽게 정의 가능.이 래퍼는 특히 SwiftUI 뷰에서 사용자 설정, 앱 상태 등을 저장하고 불러오는 데 유용.자동으로 상태 변화를 감지하고 UI를 업데이트하므로, UserDefaults와 직접 상호작용하는 것보다 편리.1. 사용법`@AppStorage`는 속성에 키와 기본값을 지정하여 사용.내부적으로 UserDefaults에 접근하여 저장 및 조회를 수행하며, 데이터 타입은 UserDefaults에서 지원하는 `Bool`, `Int`, `Double`, `String`,.. [SwiftUI] @ObservableObject / @Published / @StateObject / @ObservedObject `@ObservableObject`, `@Published`, `@StateObject`, `@ObservedObject`는 상태 관리와 데이터 흐름을 위한 속성 래퍼.이 속성들은 각기 다른 용도로 사용되며, 뷰와 데이터 모델 간의 데이터를 연결하고 상태 변경 시 뷰를 업데이트하는 역할.1. `@ObservableObject`정의`@ObservableObject`는 관찰 가능한 객체를 정의하는 데 사용.`ObservableObject` 프로토콜을 채택한 클래스에 적용하며, 해당 객체에서 발생하는 상태 변경을 뷰에 알림.주요 특징클래스에 사용Swift의 `class`에서만 사용할 수 있음.Publisher 역할`@Published` 속성이 변경되면 `ObservableObject`는 변경 사실을 알림.Co.. [SwiftUI] @ViewBuilder `@ViewBuilder`란?`@ViewBuilder`는 SwiftUI에서 여러 뷰를 묶어 하나의 반환 값으로 처리할 수 있도록 돕는 결과 빌더(Result Builder).이를 통해 SwiftUI에서 여러 개의 뷰를 조건적으로 반환하거나 반복적으로 생성하는 UI 코드를 간결하고 선언적으로 작성할 수 있음.SwiftUI에서 많이 사용되는 `VStack`, `HStack`, `ZStack`과 같은 컨테이너 안에서 여러 뷰를 배치하거나, 뷰 속성을 정의할 때 사용. `@ViewBuilder`는 특히 SwiftUI가 뷰의 계층 구조를 효율적으로 관리하고 렌더링하는 데 중요한 역할.1. `@ViewBuilder`의 역할여러 뷰를 하나의 뷰로 반환SwiftUI에서 여러 뷰를 반환하면 이를 하나로 묶어 렌더링할 수.. 이전 1 2 다음