TCA4 TCA - 뽀모도로 앱, Timer View Interaction 기존 코드Timer View의 하위 View Components를 Enum으로 구분해 Interaction이 발생하면 해당 Enum 값을 방출함타이머 뷰 컴포넌트 Interaction Enum 값으로 분리extension TimerFeature{ enum ActionType:Equatable{ case timerFieldTapped case catTapped case resetTapped case triggerTapped case triggerWillTap } enum Action:Equatable{ case viewAction(ActionType) ... }}View 컴포넌트에서 사용enum.. 2024. 5. 7. TCA에서 Stream 생성 및 주입 원하는 구현 사항RealmDB를 사용해서 타이머가 끝난 기록(Analyze)을 보여주는 기능✅ 타이머가 끝나고 DB에 새로운 데이터가 추가되면, AnalyzeFeature에서 특별한 Action 없이 비동기로 새로운 데이터를 포함하는 목록을 AnalyzeState에서 가져오도록 만들고 싶었다.구현 목표도식화기록 기능 구현 진행 사항 Analyze에서 새로운 타이머 기록 데이터를 Action 없이 가져오기 RealmDB는 단일 Actor에서 작동하도록 설계되었고 (예외적인 사항 존재), 나는 메인 actor가 아닌 Realm전용 Actor에서 작동하도록 구현했다. ⇒ 이로 인해, async/await 비동기 처리를 필수로 만족해야함RealmDB을 접근을 Dependency로 분리했다. ⇒ Global한 값.. 2024. 4. 13. Using @globalActor RealmSwift in TCA 1. Realm 전용 Actor 지정하기 @globalActor GlobalActor | Apple Developer Documentation A type that represents a globally-unique actor that can be used to isolate various declarations anywhere in the program. developer.apple.com @MainActor가 메인 스레드에서 작동하는 것과 같이 특정 Actor에서의 쓰레드 동작을 보장하는 방법 [SwiftUI] @globalActor How to use Global Actors in Swift (@globalActor) | Swift Concurrency MainActor의 작동이 메인 스레드를 통해.. 2024. 3. 25. TCA - Pagination TabView 사용 ✅ 기존 TCA에서 TabView를 사용한 자료들은 TCA viewStore을 사용한 예제만 존재함. (구 버전...) viewStore를 쓰지 않고 Bindable을 사용한 TCA에서 TabView를 어떻게 자연스럽게 쓸 수 있을까?? ✅ TCA 버전 1.9.2 문제점❗ 타이머 뷰에서 타이머 작동 후, 탭을 스와이프 한 후 돌아오니 타이머 뷰가 사라지는 문제점 발생 원인: TabView Swipe 할 때 마다 새로운 Store을 생성하는 하위 뷰Swipe 후, 기존 TimerFeature 내부 타이머 뿐만 아니라 새로운 TimerFeature 내부 타이머도 호출되는 것을 발견TabView와 연결된 상위 Feature에서 하위 Feature인 TimerFeature의 값을 전파해서 문제를 해결해야겠다고.. 2024. 3. 17. 이전 1 다음