๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

RX3

[Design Pattern] ReactorKit์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ RxSwift์™€ MVVM ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ• ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๋Š” ReactorKit์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ReactorKit์ด๋ž€? ReactorKit ๊ณต์‹ ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ReactorKit์€ ๋ฐ˜์‘ํ˜• ๋ฐ ๋‹จ๋ฐฉํ–ฅ Swift ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ์œ„ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ReactorKit์€ ์•„๋ž˜์™€ ๊ฐ™์ด Reactor์™€ View๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”๋ฐ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์„ Action๊ณผ State๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ViewModel ์—ญํ• ์„ Reactor๊ฐ€ ํ•˜๋Š”๋ฐ ์ด ViewModel์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ฐ˜์‘ํ˜• ์ด๋ฒคํŠธ๋“ค์„ ์•ก์…˜๊ณผ ์ƒํƒœ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด์ฃ ! ReactorKit์„ ์“ฐ๋ฉด ๋ญ๊ฐ€ ์ข‹์€๋ฐ? 1. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๋‹ค. ๋ทฐ์—์„œ.. 2021. 6. 17.
[RxSwift] Combining Observables ์•Œ์•„๋ณด๊ธฐ (Combine Latest,Zip, Merge,Concat,withLatestFrom) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋žœ๋งŒ์— RxSwift ๊ธ€์„ ํฌ์ŠคํŒ…์„ ํ•˜๋Š”๋ฐ.. ์จ์•ผ์ง€ ์จ์•ผ์ง€ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค... ์˜ค๋Š˜์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ๋“ค์„ ํ•ฉ์ณ์ฃผ๋Š” ์—ฐ์‚ฐ์ž๋“ค์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ 1.CombineLatest ์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜ต์ €๋ฒ„๋ธ”์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์˜ ๊ฐ’์„ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ ์ƒ‰๊น”,๋ชจ์–‘,์ˆซ์ž๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ์„œ๋ธŒ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. let ์ƒ‰๊น” = PublishSubject() let ๋ชจ์–‘ = PublishSubject() let ์ˆซ์ž = PublishSubject() ์ปด๋ฐ”์ธ๋ ˆ์ดํ‹ฐ์ŠคํŠธ๋กœ ๊ฐ ์˜ต์ €๋ฒ„๋ธ”์„ ๋ฌถ์€ ๋’ค ๊ตฌ๋…์„ ํ•˜์—ฌ ๋ฐฉ์ถœํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•ด๋ด…๋‹ˆ๋‹ค. let combineLatest = Observable.combineLatest(์ƒ‰๊น”,๋ชจ์–‘,์ˆซ์ž) {์ƒ‰๊น”,๋ชจ์–‘,์ˆซ์ž .. 2021. 4. 7.
[RxSwift] RxSwift๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ด์œ  ํ‰์†Œ์— MVVMํŒจํ„ด์ด๋‚˜ Rx์™€ ๊ด€๋ จ๋œ ๊ฒƒ๋“ค์ด ๋งŽ์ด ๋ณด์˜€๊ณ  ๊ผญ ๋ฐฐ์›Œ์•ผํ•œ๋‹ค๋Š” ๋ง๋“ค์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™œ ๋ฐฐ์›Œ์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„  ์•Œ์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ์™œ ํ•ด์•ผํ•˜๋Š”๊ฐ€ Rx๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋จผ์ € ํ•ด์•ผํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ธฐ์ „์— RxSwift๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. RxSwift๋ž€ Reactive eXtensions + Swift์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Rx๋Š” ๋ฌด์—‡์ธ๊ฐ€? Rx๋Š” Reactive Programming ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋˜์–ด์žˆ๋Š” API์ž…๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์— ์‰ฝ๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ฒคํŠธ๋“ค์˜ ์ˆœ์„œ,์žฌ์‚ฌ์šฉ์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋น„๋™๊ธฐ์‹(์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰) ํ™œ๋™์„ ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ Functional Pro.. 2020. 9. 3.
728x90
๋ฐ˜์‘ํ˜•