Effect의 구현과 활용 - Action에 따른 결과 : EffectEffect는 Reducer의 액션이 반환하는 타입으로, 액션을 거친 모든 결과들을 칭한다. 그 중 외부에서 어떠한 처리가 일어나서 얻게된 예상과 다른 결과물들을 Side Effect라고 한다. Effect는 외부 시스템과 상호작용하는 작업을 나타내는데, 이를 통해 앱의 State가 변경된다. State를 직접 변경할 때의 Action과 달리, Effect는 비동기적인 작업을 수행하고 그 결과를 Action으로 반환하여 State에 반영하기 위해 사용 된다. 즉, Effect는 특정 Action을 실행한 후 그 결과에 따라 새로운 Action을 생성하고 이를 통해 State를 업데이트하는 역할을 담당한다. 네트워크 호출, 데이터 로딩,..
TCA의 기본 개념TCA는 현재 상태가 어떤지 파악하고 이를 관리하기 쉽게 하기 위해 고안된 단방향 아키텍처이다. 여기서 단방향 아키텍처라는 부분에 집중해보자. 먼저 MVVM패턴에 대해서 알아보면 MVVM 또한 단반향 아키텍처로서 View가 ViewModel의 상태를 관찰하고 해당 상태에 따라 업데이트 된다. View는 자기 자신을 렌더링하고 유지하기 위해 ViewModel에게 자신의 상태와 로직을 전달한다. 따라서 View는 그 상태와 로직이 어떤 방식으로 변형되는지 알지 못해야 한다. 그러나 SwiftUI와 같은 양방향 데이터 바인딩을 지원하는 프레임워크를 사용하면 View가 ViewModel에서의 요청을 받아와서 추가적인 작업을 해야하는 경우가 발생한다. 이를 방지하기 위해 @Published 속성..
오늘은 SwiftUI 에서 자주 만나게 되는 onChange에 대해서 알아보는 시간을 가져보자https://developer.apple.com/documentation/swiftui/view/onchange(of:perform:)먼저 onChange는 뷰의 특정 값이 변경될 때 동작을 수행할 수 있게 해주는 도구라고 보는 편이 이해하기 쉽다 🙂 onChange를 통해 상태 변화에 반응하고 다른 효과를 실행하거나 상태를 업데이트하는 등 다양한 방면에 사용된다. 예를 들어 사용자의 입력이 변화할때 UI를 업데이트하거나 특정 동작을 수행하는데 사용할 수 있다..onChange(of: value, perform: { newValue in // 'value'가 변경되었을 때 실행할 코드})기본적인 사용 문..
SwiftUI를 접하면서 이 Wrapper를 활용해서 데이터 변동을 관리하는 내용이 나에겐 아주아주 흥미로운 것 같다 프로젝트를 진행하며 역할을 줄때마다 재밌다..오늘은 이전에 살짝 어떤 차이가 있나 알아봤지만 오늘은 자세하게 한번 파보려고 한다. 간단한 iOS 기기 목록을 나타내는 방식으로 해당 내용을 정리해 보도록 하자! @StateObject먼저 이 StateObject는 SwiftUI에서 뷰의 수명동안 객체의 상태를 소유하고 관리하는 역할을 담당한다. 그렇기 때문에 StateObject는 부모뷰에서 View가 처음 생성되어 초기화 할때 주로 사용된다는 특징을 가지고 있다! 먼저 더미 데이터 모델을 만들어보자import Foundationstruct iOSdeviceModel: Identifiabl..
오늘은 SwiftUI 중에서 propertyWrapper 로 사용되는 것들 중 가장 기초가 되는 State, Binding에 대해서 다시 한번 정리할 겸 글을 작성해보려고 한다. State먼저 SwiftUI에서 State는 뷰의 상태를 관리하는데 사용된다. 뷰 내부에서만 사용되는 상태이며, 상태가 변경되면 해당 상태를 사용하는 뷰가 다시 렌더링 된다. 보통 뷰의 로컬 상태를 관리하는데 사용되며 private를 사용하고 뷰의 최상단에서 관리되어야 한다.이로 인해서 상태 관리가 뷰 내부에 캡슐화 되어 더욱 안전하게 관리 될 수 있게 된다. 예제코드로 살펴보자struct StateBasic: View { @State var backgroundColor: Color = Color.green @Stat..
SwiftUI를 공부하면서 ZStack , overlay , background가 비슷한 기능을 가지고 있지만 명확한 차이가 있다는 점을 알게 되었다.이 점은 추후 내가 선택을 해야할 때 인지를 하고 있어야 하기 때문에 어떤 차이가 있는지 자세하게 한번 알아보는 시간을 가져보려고 한다. ZStack먼저 ZStack에 대해서 알아보면 ZStack은 간단하게 말하면 포함 되어있는 뷰를 위로 겹겹이 쌓아주는 것이라고 보면 된다. 자기 자신 안에 있는 View들을 독립적으로 취급한다는 것이 차이점이다. 각각 독립적으로 취급하기 떄문에 그 안에 가장 큰 width, height에 따라 size가 결정된다. 예제 코드를 살펴보면ZStack (alignment: .topLeading) { Rectangle() ..