본문 바로가기

이모저모/SwiftUI8

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.
웹 통신과 ObservedObject, StateObject 문제점💡 뷰를 푸시 즉시 API 호출을 통해 결제할 수 있는 상품 아이템 리스트를 가져오는 뷰     분명 아이템 배열이 표시가 되었지만 바로 사라지는 문제 발생원하는 모습..!문제 가능성API 통신이 2번 된다. (X)⇒ print가 한번만 일어났다.case .lists(let response): print("list 받기 \(response)") Task{@MainActor in self.payAmountList = response }뷰 모델에 list가 2번 set된다. (X)⇒ didSet으로 추적한 결과 한번만 일어났다.@MainActor @Published var payAmoun.. 2024. 2. 20.
Present, FullScreen 한 번에 처리하기 🚨 SwiftUI는 UIKit에서의 Present를 뒤에 시트를 일부 가리며 Swipe로 내릴 수 있는 Present, 뒤 시트를 전부 가리며 Swipe로 내릴 수 없는 Fullscreen 두 가지 모디파이어로 나누었다. 이 둘을 더 간편하게 사용하고 싶었다. 기존 코드와 문제점 기존 코드) Swift Enum 연관값을 통한 Present, FullScreen 분리 상태 케이스 생성 extension ProfileView{ enum SheetType:String, Identifiable{ var id: String{ self.rawValue} case profile // 프로파일 뷰로 가기 위한 처리 } enum FullscreenType:String, Identifiable{ var id: String.. 2023. 12. 12.