apple 216

[TCA] Effect #5 (Timers)

[TCA] Effect #5 (Timers) 목차 - Timers 주제에 대해서 간단히 알아보기 - Timers와 관련한 예제 # Timers 주제에 대해서 간단히 알아보기 @Dependency(\.continuousClock) var clock 위의 디펜던시 예제처럼 사용할 수 있음 Swift Clocks 라이브러리에서 제공하는 Helper인 클럭에 .timer 메서드를 사용 비동기 코드로 시간을 처리하기 위한 `AsyncSequence` 친화적인 API를 제공 # Timers와 관련한 예제 // MARK: - Feature domain struct Timers: Reducer { struct State: Equatable { var isTimerActive = false var secondsElaps..

apple/TCA 2023.10.07

[TCA] Effect #4 (Refreshable)

[TCA] Effect #4 (Refreshable) 목차 - Refreshable에 대한 - Refreshable을 사용하는 예제 # Refreshable에 대한 이번에는 List를 리프레시 하는 방법에 대해서 알아보자 이번에는 버튼을 클릭해서 API 콜하는게 아니라 리프레시를 통해 API를 콜 할 예정이다. 특이점으로는 viewStore.send(..., animation: ) 으로 animation을 건네주어 볼 예정! # Refreshable을 사용하는 예제 // MARK: - Feature domain struct Refreshable: Reducer { struct State: Equatable { var count = 0 var fact: String? } enum Action: Equata..

apple/TCA 2023.10.07

[TCA] Effect #3 (LongLiving)

[TCA] Effect #1 (LongLiving) 목차 - LongLiving에 대한 설명 - Effect LongLiving 예제 살펴보기 # LongLiving에 대한 설명 이번에는 NotificationCenter의 알림들처럼 effect의 라이프사이클이 긴 것들을 처리하는 방법과 그것들을 View의 라이프 사이클과 연결하는 방법에 대해서 알아보고자 함. 이번에는 스크린샷을 여러번 찍으면서 UI의 카운트가 몇번이나 발생하는지 관찰하는 예제 그런 다음 다른 화면으로 이동하여 스크린샷을 촬영한 후 이 화면에서 스크린샷이 *not* 카운트되는지 확인하고, 해당 화면을 떠나면 노티피케이션 효과가 자동으로 취소되고 화면에 들어갈 때 다시 시작. # Effect LongLiving 예제 살펴보기 import..

apple/TCA 2023.10.07

[TCA] Effect #2 (Cancellation)

[TCA] Effect #1 (Cancellation) 목차 - 해당 예제와 관련한 설명 - 해당 예제 코드 # 해당 예제와 관련한 설명 This screen demonstrates how one can cancel in-flight effects in the Composable Architecture. Use the stepper to count to a number, and then tap the "Number fact" button to fetch a random fact about that number using an API. While the API request is in-flight, you can tap "Cancel" to cancel the effect and prevent it fro..

apple/TCA 2023.10.07

[TCA] Effect #1 (Basics)

[TCA] Effect #1 (Basics) 목차 - Effect란? - Effect Basic 예제 살펴보기 - Effect란? TCA로 만들어진 기능에 Side Effect을 도입할 수 있음. Side Effect란 외부에서 수행되어야 하는 작업들로 API 요청, HTTP를 통해 외부 서비스를 사용하는 등 불확실하며 복잡하기도 함. - 영어 용어 정리 NB: nota bene라는 라틴어로 주의, 유의라는 의미 - Effect Basic 예제 살펴보기 import ComposableArchitecture import SwiftUI // MARK: - Feature domain struct EffectsBasics: Reducer { struct State: Equatable { var count = 0..

apple/TCA 2023.10.07

[TCA] SharedState

[TCA] SharedState 목차 - SharedState란? - SharedState 예제 코드 알아보기 - SharedState를 통해 통합관리 vs 각각의 Reducer를 통합 - SharedState란? 여러 개의 독립된 화면이 합성 가능한 아키텍처에서 상태를 공유할 수 있는 방법을 제시. - SharedState 예제 코드 알아보기 // MARK: - Feature domain struct SharedState: Reducer { enum Tab { case counter, profile } struct State: Equatable { var counter = Counter.State() var currentTab = Tab.counter /// The Profile.State can be..

apple/TCA 2023.09.27

[TCA] OptionalState (IfLetCase)

[TCA] OptionalState (IfLetCase) 목차 - OptionalState란? - OptionalState 예제 - IfLetCase 알아보기 - OptionalState란? Reducer의 State 중 optional로 선언된 state를 일컬음. - OptionalState 예제 1. optional값은 IfLetCase를 통해서 분기처리 가능 - 자세한 사항을 코드의 주석 참고 // MARK: - Feature domain struct OptionalBasics: Reducer { struct State: Equatable { var optionalCounter: Counter.State? // 1. ✅ State를 optional 상태로 보유 } enum Action: Equat..

apple/TCA 2023.09.27

[TCA] FocusState

[TCA] FocusState TCA의 FocusState 사용방법 정리 - 목차 - FocusState 사용 예제 - FocusState 사용 예제 SwiftUI의 @FocusState는 TCA 라이브러리의 `bind` view Modifier를 통해 사용 - 자세한 부분은 코드의 주석을 확인 // MARK: - Feature domain struct FocusDemo: Reducer { struct State: Equatable { @BindingState var focusedField: Field? // ✅ 2. 포커스 스테이트로 사용할 bindingState를 선언 @BindingState var password: String = "" @BindingState var username: String..

apple/TCA 2023.09.27

[TCA] Binding

[TCA] Binding TCA의 Binding 방법 정리 목차 - TCA Binding Basic 예제 - TCA BindingState를 사용한 예제 - BidingReducer()를 가장 상단에 작성하는 이유 - TCA Binding Basic 예제 아래 코드는 TCA를 사용할 때 가장 기본적인 방법. // MARK: - Feature domain struct BindingBasics: Reducer { struct State: Equatable { var sliderValue = 5.0 var stepCount = 10 var text = "" var toggleIsOn = false } enum Action { case sliderValueChanged(Double) case stepCountC..

apple/TCA 2023.09.27

[TCA] Tutorial #5 (Multiple presentation destinations)

[TCA] Tutorial #5 (Multiple presentation destinations) // MARK: - Contact import Foundation import ComposableArchitecture struct Contact: Equatable, Identifiable { let id: UUID var name: String } struct ContactsFeature: Reducer { struct State: Equatable { var contacts: IdentifiedArrayOf = [] @PresentationState var destination: Destination.State? // 화면전환을 이렇게 묶어서 분리해서 처리 } enum Action: Equatable ..

apple/TCA 2023.09.24