rxswift
-
RxSwift - Buffer & WindowRxSwift 2021. 10. 6. 19:30
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ Buffer์ Window์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ด์ ํฌ์คํ ์์ Debounce์ Throttle์ ๋ํด ํ์ตํด๋ณผ๋ ์ ๊น Buffer์ Window๋ฅผ ๋ดค์์ด์! ๊ทธ๋ฐ๋ฐ ํ์ด๋จธ๋ฅผ ๋๋๊ฒ๋ ๊ทธ๋ ๊ณ ๋น์ทํ๊ฒ ๊ฐ์๋ฐ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ๊ถ๊ธํด์ก์ต๋๋ค. ์ด์ ์ ํฌ์คํ ์์ ๋๊ฐ๋ฅผ ์์๋ณด๋ คํฉ๋๋ค๐ง Buffer Buffer๋? Buffer๋ ์ต์ ๋ฒ๋ธ์์ ๋ฐฉ์ถํ๋ ์ด๋ฒคํธ๋ฅผ ๋ฒ๋ค๋ก ํ๋ฒ์ ๋ฌถ์ด์ ๋ฌถ์์ผ๋ก ๋ฐฉ์ถํ๊ฒ ํด์ค๋๋ค. ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํ๋ก์ฐ์ ๋๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋นจ๊ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ์ด๋์ ๋์ TimeSpan์ดํ ๋นจ/๋ ธ/์ด ์ด๋ฒคํธ์ ๋ํด ๋ฌถ์ด ๋ฐฉ์ถ์์ผ์ค๋๋ค. Buffer์ ์ ์ธ import RxSwift public func buffer( timeS..
-
RxSwfit - Debounce & ThrottleRxSwift 2021. 10. 2. 10:29
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์์ ์ฌ์ฉ๋๋ debounce์ throttle์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์์ธํ ํ์ตํ๊ธฐ์ ๊ฐ๋จํ๊ฒ debounce์ throttle์ด ์ด๋ค๊ฑธ ํด์ฃผ๋ ๋ฉ์๋์ธ๊ฐ์? Rx์์๋ ์ฌ์ฉ์์ ์ก์ ์ด๋ ์ ์ํด์ค๊ฒ์ ๋ฐ๋ผ observable์ด ๋ฐฉ์ถ๋ฉ๋๋ค. ๊ทธ ์๋ฆฌ๋ ๋ง์ฝ ๋์๋ค๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ์ก์ ์ ์ทจํด์ฃผ๋ฉด observable์ด ๋ฐ๋ฅ๋ฐ๋ฅ ๋ถ์ด์ ๋ฐฉ์ถ๋๊ฒ ์ฃ ? debounce๋ ๊ฐ๋ตํ ํ์ด๋จธ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ํ์ด๋จธ๋ฅผ ๋๊ณ ์ผ์ ์๊ฐ ํ ๋ง์ง๋ง์ ๋ค์ด์จ observable์ ๋ฐฉ์ถํด์ค๋๋ค. throttle๋ ๋น์ทํ๋ฏ ๋ค๋ฅธ๋ฐ์. throttle์ ์ด๋ฒคํธ๊ฐ ๋ฐฉ์ถ๋๋ฉด ํ์ด๋จธ๋ฅผ ๋๊ณ ํด๋น ํ์ด๋จธ ์ดํ์ ์ด๋ฒคํธ๋ฅผ ๋ ๋ค์ ๋ฐฉ์ถํ๋ ์ฐจ์ด์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ..
-
concat & mergeRxSwift 2021. 8. 16. 14:40
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ concat๊ณผ merge์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ผ๋จ ๋ ๋จ์ด์ ์ฌ์ ์ ์ธ ์๋ฏธ๋ถํฐ ์ดํด๋ณด๋ฉด, concat์ concatenate์ ์ฝ์๋ก ์ฐ์ค์, ์ฌ์ฌ์ ์๋ค ๋ผ๋ ๊ทธ๋ฐ ๋์์ค์ ๋ป์ ๊ฐ์ง๊ณ ์์ต๋๋ค. merge๋ ํฉ๋ณ, ํฉ์น๋ค, ์ตํฉํ๋ค, ์ด์ฐ์ด๋ฆฌ์ง๋ค ๋ฑ๋ฑ์ ๋์์ค์ ๋ป์ด ์๋ค์! ๋ค๋ค merge๋ ๊น์ ์ฌ์ฉํ๋ ๋ญํ๋ ๋ค์ํ๊ฒ ๋ค์ด๋ณด์ จ์ํ ๋ฐ concat๋ ์ฌ์ ์ ์๋ฏธ๋ฅผ ๋ณด๋ฉด ๋์ผํ ๊ธฐ๋ฅ์ ํด์ค๊ฑฐ๋ผ๋ ๋๋์ด ์ต๋๋ค. ์ concat๊ณผ merge์ ๋ํด ์์๋ณด๊ธฐ ์์ํ๋์ง ํ์ด๋ณด์๋ฉด, ํ์ฌ RxSwift๋ฅผ ๊ณต๋ถํ๋ฉด์ ์ฌ๋ฌ ํผ๋ธ๋ฆฌ์ ๋ค์ ํ ๋์ ์ฆ, ํ ์คํธ๋ฆผ์์ ๋์ํ๊ฒ ํ๊ณ ์ถ์๋ concat๊ณผ merge๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ๊ณค ํฉ๋๋ค. ๋ ๊ธฐ๋ฅ..
-
RxSwift - CombineLatest & withLatestFromRxSwift 2021. 8. 9. 21:25
์๋ ํ์ธ์ ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ CombineLatest์ withLatestFrom์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐๐ป CombineLatest - ๋๊ฐ์ Observable์ ํด๋นํ๋ ๊ฐ๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์ต์ ์ผ๋ก ์์ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฌถ์ด ์ ๋ฌ ์ฝ๊ฒ ์ฝ๋๋ฅผ ํตํด์ ์ดํดํ์๋ฉด ์๋์ ๊ฐ์ด ์ ์ํด๋ณผ ์ ์๋ค. let owner = Observable.from(["์ฒ ์", "์ํฌ", "์ค์", "์ ์ธ"]) let pet = Observable.from(["cat", "dog", "bird", "pig"]) Observable.combineLatest(owner, pet, resultSelector: { (owner: String, pet: String) return (owner, pet) } ) .subsc..
-
ReactorKit์ผ๋ก ๋๋ค ํต์ ๊ตฌํํ๊ธฐiOS 2021. 7. 10. 09:30
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ReactorKit์ผ๋ก ๋๋คํ ํต์ ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ฐ์ ๊ฐ๋ตํ ๊ธฐ๋ฅ์ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค. ReactorKit์ ์ด์ฉํ์ฌ ๋ฆฌ์กํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ์์ฃผ ๊ฐ๋จํ ์์ ๋ก ํต์ ์ GET์ ID ์ธ๋ฑ์ค๋ฅผ ๋๊ฒจ ํต์ ํ ๋ ํด๋น ์ธ๋ฑ์ค๋ฅผ ๋๋คํ๊ฒ ๋ฝ๊ณ ํต์ ๋ฐ ํ์ฑํ ํ ID์ ํ์ดํ์ UI์ 3์ด๋ง๋ค ์๋ ๊ฐฑ์ ๋๋๋ก ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๋๋ค๐ง๐ป๐ป ์ฌ๊ธฐ ํฌ์คํ ์์๋ ํ์ ํ์ผ์ ๋ํ ๊ตฌํ๋ค๋ง ๊ฐ๋จํ ์๊ฐํ๊ณ ์๋ ์ Git ๋ ํฌ ์ฃผ์๋ฅผ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค! ๋ ์ฐธ๊ณ ํ์ค ๋ถ๋ค์ Git์ ์ฐธ๊ณ ํด์ฃผ์ธ์๐๐ป 1. Model 1) JSON ๊ตฌ์กฐ์ฒด - ํต์ ํ JSON ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. import Foundation struct RandomInfo:..
-
ReactorKit์ผ๋ก ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐSwift 2021. 7. 5. 21:48
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ReactorKit์ผ๋ก ๊ณ์ฐ๊ธฐ๋ฅผ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ฐ์ ์ด๋ฒ ๊ณ์ฐ๊ธฐ ํ๋ก์ ํธ ๊ฐ์ ๊ฒฝ์ฐ์๋ ReactorKit์ผ๋ก ์ด๋์ ๋ ์ ํํ๋ ๋ฆฌ์กํธ MVVM ์ํคํ ์ณ ํจํด์ ๋ฐ๋ฆ ๋๋ค. ์ฌ๊ธฐ ํฌ์คํ ์์๋ ํ์ ํ์ผ์ ๋ํ ๊ตฌํ๋ค๋ง ๊ฐ๋จํ ์๊ฐํ๊ณ ์๋ ์ Git ๋ ํฌ ์ฃผ์๋ฅผ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค! ๋ ์ฐธ๊ณ ํ์ค ๋ถ๋ค์ Git์ ์ฐธ๊ณ ํด์ฃผ์ธ์๐๐ป 1. View - ๋ทฐ๋ ์ฐ์ ์คํ ๋ฆฌ๋ณด๋๋ก UI์์ ๋ฐฐ์น์ ์คํ ๋ ์ด์์์ ์ ์ฉํ์ต๋๋ค. - ๊ทธ ํ ViewController์์ ReactorKit์ ์ํฌํธํ๊ณ ์คํ ๋ฆฌ๋ณด๋๋ทฐ๋ฅผ ์ฑํํ์ฌ ๋ฆฌ์กํธ์ ๋ฐ์ธ๋ฉ๋ ์ ์๊ฒ ๊ตฌํํ์์ต๋๋ค. import UIKit import ReactorKit import RxCocoa class CalculatorV..
-
CombineCombine 2021. 6. 9. 16:27
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ Combine์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป Combine์ ์๊ธฐ์ ! MVVM ํจํด์ ๋ฐ๋ฅด๊ธฐ ์ํด ์คํ ๋ฆฌ๋ณด๋ ์์ ๋์ SwiftUI๋ฅผ ์ฌ์ฉํ๋ฉด์ RxSwift๋ก ๊ตฌํ์ ํด์ฃผ์๋๋ฐ์. WWDC 2019 ์ดํ Combine์ด ๋ํ๋ฌ์ต๋๋ค. Combine์ด ๋ฌด์์ด๋? ์ฝ๊ฒ ์๊ฐํ๋ฉด RxSwift๋ ์จ๋ํํฐ ํ๋ ์์ํฌ์ด๊ณ Combine์ ์ ํ์์ RxSwift์ ์ญํ ์ ์ํด ๋ง๋ ํผ์คํธํํฐ ํ๋ ์์ํฌ์ ๋๋ค. Combine์ ์ ์ฐ๋? RxSwift๋ฅผ ์ฐ๋ ์ด์ ์ ์์ถฉํ๋ค๊ณ ๋ณด๋๋ฐ์. ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํจ์ ๋๋ค. ๊ธฐ์กด์ ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํด delegate, GCD, notification center, ์ฝ๋ฐฑ ํด๋ก์ ๋ฑ์ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๋ฌธ..
-
RxSwiftRxSwift 2021. 4. 15. 16:07
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ ๋ํด ๊ธฐ์ด์ ์ธ ๋ถ๋ถ์ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ฐ์ ์ด์ ํฌ์คํ ์ธ SwiftUI์ ์ด์ด RxSwift๋ฅผ ํ์ตํ๊ธฐ์ ์ ์ด๋ฐ๊ฒ์ ๋ํด ๋ฐฐ์์ผํ๋์ง ๋ญ๊ฐ ์ค์ํ์ง ๊ฐ๋ตํ ์์๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์ฐ์ MVVM์ ๋ํด ์ ํ์๊ฐ ์์ต๋๋ค. MVC / MVP / MVVM 1. MVC - ์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉ์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ๋ฐ ๋ณํํ์ฌ ๋ทฐ์ ์ ๋ฐ์ดํธ ํด์ฃผ๋ ์ํคํ ์ณ ํจํด - ๊ฐ๊ฐ์ ๋ถ๋ฆฌํ์ฌ ์์กด์ฑ์ ์์ ๋ คํ๋๋ฐ ๋ทฐ์ ์ปจํธ๋กค๋ฌ์์๋ ์ํต์ ํ๊ธฐ์ ์์กด์ฑ์ด ์๊ธธ ์ ์์ด ์ฌ์ฌ์ฉ์ฑ์ด ๋ฎ์์ง 2. MVP - MVC์ ๋์ผํ ๊ฐ๋ ์ผ๋ก C๋์ P๊ฐ ๋ค์ด๊ฐ๊ฒ์ผ๋ก ํ๋ ์ ํฐ๋ก ๋ณ๊ฒฝ - ๋ทฐ์ ํ๋ ์ ํฐ์ ์์กด์ฑ ๋ฌธ์ ๊ฐ ๊ฒฐ๊ตญ ๋ํ๋จ 3. MVVM -..