apple/UIKit, ReactiveX 39

[ReactorKit] ReactorKit 공부하기 #3 RxTodo 따라잡기 (1)

ReactorKit 공부하기 #3 RxTodo 따라잡기 (1) 아무튼 ReactorKit RxTodo 예제 고고 이번시간에 하려고 한 것 아래 폴더로 구성 Service 부분은 현재 예제를 구현하기에 그렇게 필요하지 않아서 패스! 🌿 구현 🌿 이제 리액터 사용법이 이해가 되기 시작했움! 리액터 정리!! ViewController에서 map을 통해 원하는 Action으로 변경해서 reactor에 전달 reactor에서는 mutate함수를 통해서 이전 상태를 받아서 다음 상태를 반환! reduce는 해당 로직처리! 그리고 변경된 값은 viewController에서 map을 통해 reactor.state를 가져다가 사용하기! 👉 ViewController // // TaskListViewController.s..

[ReactorKit] ReactorKit 공부하기 #2

ReactorKit 공부하기 #2 📌 해당 문서는 ReactorKit 3.2.0을 기준으로 하고 있습니다. ReactorKit은 SPM을 지원하지 않습니다. 해당 프로젝트를 위해 RxTest, RxBlocking을 추가적으로 사용하였습니다. 코드 파일은 글 제일 하단에서 확인하실 수 있습니다. 이번에는 ReactorKit 테스트에 대해서 알아볼 예정이다. 한 이틀을 환경문제로 삽질을 했는데, 그 해결법을 여기에 담고 있다... ✅ RxTest는 꼭 Tests쪽으로 타겟을 잡아주세요! 그렇지 않으면 앱이 죽습니다 ㅠ ✅ 1편 포스팅 코드를 그대로 사용했습니다. ReactorKit의 경우에는 테스트를 위한 함수가 내장되어 있다. 손쉽게 view와 reacotr 둘 다 테스트 할 수 있다!! 그렇다면 무엇을 ..

[ReactorKit] ReactorKit 공부하기 #1

ReactorKit 공부하기 #1 📌 해당 문서는 ReactorKit 3.2.0을 기준으로 하고 있습니다. ✅ 오늘은 ReactorKit에 대해서 공부해보려고 합니다. 음,, 사전과제를 수행하면서 정말 오!랜!만!에! RxSwfit를 다시 사용했었는데, 기본기에 더 집중했던 것 때문인지 오랜만에 사용했어도 여렵게 느끼지지 않았습니다. 다만 조금 아쉬웠던 부분이라면, 학습한 디자인 패턴을 SwiftUI 기반의 프로젝트에만 적용하다 당장 잘 작성해야 하는 프로젝트에서 최적의 구조가 어떤 것이지 고민하는 시간이 많아서 개발이 조금 지체되었다는 점,,, RxSwfit를 사용한다면 ReactorKit도 알면 좋을 것 같아서 도전 고고! ✅ ReactorKit 깃허브 문서 https://github.com/Reac..

[iOS] RxAction

RxAction ✅ Rx를 공부하다가 RxAction을 발견해서 한번 공부해 보기로 함 https://github.com/RxSwiftCommunity/Action GitHub - RxSwiftCommunity/Action: Abstracts actions to be performed in RxSwift. Abstracts actions to be performed in RxSwift. Contribute to RxSwiftCommunity/Action development by creating an account on GitHub. github.com ✅ [APP UI] APP UI를 확인해보기!! ✅ ActionViewController.swift // // ActionViewController.sw..

[RxSwift] Signal, emit

Signal과 emit 이번에는 Signal과 Emit에 대해서 알아보자. 다른 사람의 Rx 코드를 리뷰하고 있는데 Signal과 emit이 있는거임 찾아보니까 Driver와 비슷했고, Signal은 잘 사용하지 않았지만, 코드를 제대로 이해하려면 정리가 필요할 것 같다고 생각해서 정리 ㄱㄱ ✅ Signal vs Driver 🟠 공통점 - error를 방출하지 않는다. - 메인 스레드에서 작동한다. 🟠 차이점 - 그림에서 보다시피 Driver는 sub할때 replay를 통해 emit이 일어나지만 Signal은 sub할때 replay를 하지 않는다. ✅ 그렇다면 Signal은 주로 어떨때 사용할까? Signal은 replay되면 문제가 있는 스트림에 사용하면 되겠다. 여러 코드를 살펴보는데 주로 viewM..

RxSwift Community - Action 🐣

✅ 이번 시간에는 RxSwift Community에 있는 Action을 알아볼 예정이야. 어떻게 알아보게 되었느냐? 이번에 RxSwift를 공부하면서 모든 챕터를 꼼꼼하게 읽어 있는데, 이 부분이 있어서 보게 되었어. 상당히 유용할 것 같더라고. 게다가 RxSwift Community에 Pinned 되어 있는걸 보니까.. 뭔가 대단할 것 같다는 생각도 들어. ✅ 코드의 위치 https://github.com/RxSwiftCommunity/Action GitHub - RxSwiftCommunity/Action: Abstracts actions to be performed in RxSwift. Abstracts actions to be performed in RxSwift. Contribute to RxSw..

RxSwift ch 18. Table & Collection views

✅ 이번 글은 RxSwift ch18을 기반으로 작성되었습니다. ✅ 목차 1️⃣ BaseView 만들어보기 2️⃣ modelSelected 사용법 3️⃣ Mutiple Cell Types ✅ BaseView 만들어보기 개발을 하다 보니 같은 UI도 여러개의 뷰에서 사용하는 경우가 있어. 하지만 이전에는 이 방법을 몰라서 그냥 복사 붙여넣기로 사용했었는데, 이번에 개발하다보니 BaseView를 두어 사용하면 좋겠다고 생각해서 만들어 보았어. 🟠 BaseView import UIKit import RxCocoa import RxSwift import SnapKit import Then struct BaseView { var tableView = UITableView().then { $0.backgroundC..

[iOS] RxDelegateProxy + WebSocket (Starscream)

[iOS] RxDelegateProxy + WebSocket (Starscream) 인턴을 하고 있는데, 기존 사이드 프로젝트에서 Starscream을 많이 다루어서 Rx로 변환하는 과정을 담당.RxStascream의 Rx 버전 문제로 인하여 직접 proxy로 만들어주어야 하는 상황. 개발환경Xcode 13.0Swift 5CocoaPod- Differentiator (3.1.0) - RxCocoa (4.5.0): - RxSwift (>= 4.4.2, ~> 4.4) - RxDataSources (3.1.0): - Differentiator (~> 3.0) - RxCocoa (~> 4.0) - RxSwift (~> 4.0) - RxSwift (4.5.0) - SnapKit (5...

[Swift] extension Reactive

✅ 이번 시간에는 extension Reactive에 대해서 알아볼 예정이야. 우리가 설치한 RxSwfit 안에는 Reactive.swift 파일이 있는데, custom point로 사용하라고 한다. 🟠 Reactive.swift Use `Reactive` proxy as customization point for constrained protocol extensions. General pattern would be: // 1. Extend Reactive protocol with constrain on Base // Read as: Reactive Extension where Base is a SomeType extension Reactive where Base: SomeType { // 2. Put ..

[iOS] RxDelegateProxy 2편 (feat. websocket + objc가 아닌 경우)

✅ 이번 시간에는 RxDelegateProxy에 대해서 알아볼 예정이야. 기존에 작성한 코드는 objc로 protocol이 구현되어 있어서 바로 사용할 수 있었지만, 그런데.. protocol objc가 아니라면 어떻게 해야할까? 자 이 부분에서 내가 엄청나게 ... 시간을 많이 ... 들여서 공부를 한 부분이야. 우선 Apple 자체에서 지원해주는 것들은 NSObjectProtocol를 상속받고 있어서 우리는 쉽게 objc로 사용할 수 있어. 하지만 외부에서 사용하는 프레임워크 중에는 objc를 사용할 수 없어서 proxy를 만드는데에 애를 먹는 경우가 있는데, 특히 Starscream이 그렇게 구현되어 있지 않아서 고민을 해야했지 ✅ 그렇다면 어떻게 구현할 수 있을까? 내가 생각한 두가지 설계 방법 ..