RxSwift 28

[RxFlow] 나만의 RxFlow 정리 #1

나만의 RxFlow 정리 #1https://github.com/RxSwiftCommunity/RxFlow 배경최근에 사이드 프로젝트를 수행하면서 Coordinator Pattern을 적용해 화면 구조를 만들었음. 해당 프로젝트 구조는 기본적으로 UIKit, ReactorKit, RxSwift를 기반으로 하고있고, 몇몇 화면과 컴포넌트들은 SwiftUI로 만들어서 UIHostingController를 사용하고 있음. 최근에는 Combine도 학습하고 있는데 RxSwift의 오퍼레이터들과 거의 비슷해서 이건 그냥 음,,, 딥하게 하지 않아도 알고 있는 것 같고.TCA도 학습하고 있는데, RxFlow를 배워도 사용할 환경이 없을 것 같아서 조금 고민되긴 함 그래도 아직은 RxSwift 기반으로 작성하는 코드가..

ReactorKit + RxDataSources #2(RxTableViewSectionedAnimatedDataSource)

ReactorKit + RxDataSources #2 (RxTableViewSectionedAnimatedDataSource) ReactorKit과 RxdataSource를 함께 사용하는걸 연습해보고자 함. 개발환경ReactorKit 3.2.0RxDataSources 5.0.2SnapKit 5.6.0Xcode 14.0폴더구조  결과물 UIRxTableViewSectionedAnimatedDataSource 사용시 애니메이션이 적용되는지 확인하기 위해 itemSelect시 첫번째 섹션 삭제RxTableViewSectionedReloadDataSource의 경우에는 reloadData()로 애니메이션 작동 안함. Step 1. 모델을 정의하기import UIKitimport RealmSwiftimport D..

[ReactorKit] ReactorKit 공부하기 #7 View (programming)

ReactorKit 공부하기 #7 View (programming)ReactorKit의 많은 예제들이 스토리보드 기반으로 작성되어 있기에 코드 기반의 예제를 작성해 봄. 들어가기 전에리액터 킷을 사용할 때 내가 자주하는 실수 간단 정리리액터를 만들고 ViewContoller와 연결하지 않아서 이벤트가 발생하지 않는거내부적으로 bind를 호출하는데, 명시적으로 내가 작성해서 또 호출하는거 View 구현 코드 확인내부적으로 bind 알아서 호출해주고 있음   ViewController 코드 작성리액터 킷 ViewContoller 작성import UIKitimport ReactorKitimport RxSwiftimport RxCocoaclass MyMemoViewController: UIViewContro..

[ReactorKit] ReactorKit 공부하기 #4 RxTodo 따라잡기 (2)

[ReactorKit] ReactorKit 공부하기 #4 RxTodo 따라잡기 (2) 코드를 하나씩 따라쳐보면서 구현해 볼 예정  구현 코드어려웠던 점Action의 경우에는 정의하기가 그리 어렵지 않았으나, Mutation을 어떻게 줘야할 지 생각을 많이했었음.//// TaskListViewController.swift// AppleCollectionView//// Created by Hamlit Jason on 2022/09/07.//import UIKitimport ReactorKitfinal class TaskListViewController: UIViewController, View { var disposeBag = DisposeBag() let reactor: TaskListVi..

[ReactorKit] ReactorKit 공부하기 #2

ReactorKit 공부하기 #2 해당 문서는 ReactorKit 3.2.0을 기준으로 작성.이번에는 테스트코드를 작성해볼 예정  들어가기 전RxTest는 반드시 CocoaPod에서 Tests쪽으로 타겟을 잡아주기!  테스팅ReactorKit의 경우에는 테스트를 위한 함수가 내장되어 있어서, 손쉽게 view와 reacotr 둘 다 테스트 가능. 그렇다면 무엇을 테스트 해야하냐면 총 3가지를 테스트하면 좋음View Action :: 주어진 유저의 상호작용에 따라 적절한 action이 reactor로 보내지는가?State :: 주어진 state에서 view의 변수가 적절하게 set(저장) 되는가?ReactorState :: action에 따라 state가 적절하게 변경되었는가?  리액터킷 테스트코드//// ..

[Combine] Let's study Combine!

Let's study Combine!SwiftUI Combine 공부  ✅ 애플 공식 문서를 바탕으로 정리하였습니다.https://developer.apple.com/documentation/combine Apple Developer Documentation developer.apple.com   ✅ Combine이란?이벤트 처리 오퍼레이터들을 결합함으로써 비동기 이벤트의 핸들링을 사용자가 다룹니다!조금 더 쉽게 말해보자면 Combine 프레임워크는 결국은 시간에 따라 값을 처리하기 위해 SwiftUI API를 제공합니다. 값을 방출하는 Publisher와 값을 수신하는 Subscriber를 통해 처리합니다. RxSwift를 공부했다면 더욱 쉽습니다.   ✅ Combine을 공부하는 이유.SwiftUI(..

RxSwift Signal,Emit

RxSwift Signal, emit RxSwift를 사용하면서 코드 리뷰 과정에서 Signal이라는걸 보아서 공부해보자! Signal vs Driver공통점 에러를 방출하지 않고, 메인스레드에서 동작차이점Driver는 구독할 때 replay를 통해 emit이 발생Signal은 구독할 때 replay를 하지 않음   Signal은 주로 어떨때 사용할까?Signal은 replay되면 문제가 있는 스트림에 사용하면 됨.여러 코드를 살펴보는데 주로 ViewModel -> View로 가는 작업 즉, UI 관련한 것들에 Signal이 보임.개인적인 생각인데 그냥 드라이버 쓰는게 더 낫지 안을까란 생각emit은 Driver를 사용했을때 drive라고 생각정리Signal과 Driver가 주로 비교되는 것 같아서 ..

iOS RxAction (RxSwift Community)

iOS RxAction (RxSwift Community) RxSwift를 사용하면서 모든 챕터를 다 알아두면 좋을 것 같아서 보게 되었음.이거 좀 유용할 것 같다는 생각이 든달까? RxSwift Communtiry에 Pinned도 되어있음 깃헙 위치- https://github.com/RxSwiftCommunity/Action  샘플 예시 아주 간단한 예시이고, RefreshControl에서도 사용할 수 있음RxCommunity - Action 부분에서 Tests를 가보면 다른 예시도 볼 수 있으니까 궁금하면 확인해보기!!import UIKitimport RxCocoaimport RxSwiftimport SnapKitimport Thenimport Actionclass ActionViewControl..

RxSwift ch 18. Table & Collection views

RxSwift ch 18. Table & Collection views이번 글은 RxSwift ch18을 공부하고 이를 기록하고자 함 목차BaseView 만들어보기 modelSelected 사용법Mutiple Cell Types BaseView 만들어보기 개발을 하다 보니 같은 UI도 여러개의 뷰에서 사용하는 경우가 있음하지만 이전에는 이 방법을 몰라서 그냥 복사 붙여넣기로 사용했었는데, BaseView를 사용해보고자 함.코드 샘플import UIKitimport RxCocoaimport RxSwiftimport SnapKitimport Thenstruct BaseView { var tableView = UITableView().then { $0.backgroundColor = .blu..

Extension Reactive (RxSwift)

Extension Reactive (RxSwift)RxSwift는 커스터마이징을 확장하여 사용할 수 있음.RxSwift 내부 코드를 분석하다보면 Reactive.swift 파일에 custom포인트로 사용하라고 안내하고 있음 연관포스팅[iOS RxStarScream 총정리](https://rldd.tistory.com/271)[iOS Starscream 총정리](https://rldd.tistory.com/272)[iOS RxDelegateProxy 만들어보기 #1](https://rldd.tistory.com/273)[iOS RxDelegateProxy 만들어보기 #2 - StarScream + RxProxy](https://rldd.tistory.com/274)[Extension Reactive (Rx..