RxSwift 28

RxFlow 학습 정리

RxFlow 학습 정리최근에 오픈소스 열풍이 불고 있는거 같은 느낌임.오픈소스나 특정한 외부 규칙 없이도 적절하게 분리해서 개발을 잘 하고 있다고 생각했는데, 취업 요건에 하나 둘 추가되면서 학습해두고자 함. 최근에 사이드 프로젝트를 수행하면서 Coordinator Pattern을 활용해 화면 전환 방식을 설계 했음.해당 프로젝트는 SwiftUI 일부 섞어서 사용하고 있어서 UIHostringController를 사용하고 있고, UIKit 기반으로 ReacotorKit을 활용하고 있음. 또한 RxSwift가 매우 익숙한데 최근에 Combine이 핫하다고 해서 보니까 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와 Reactor 둘 다 테스트 가능. 그렇다면 무엇을 테스트 해야하냐면 총 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..