ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ RxSwift ์ดํดํ๊ธฐ_03
RxSwift ์ดํดํ๊ธฐ_01 - https://jayb-log.tistory.com/275
RxSwift ์ดํดํ๊ธฐ_02 - https://jayb-log.tistory.com/276
โ
- ๐ ์ด ๊ธ์ RxSwift์ ๋ํ ์์ฒญ๋ ์ดํด๋ ๋ณธ์ง์ ํ์ ํ๋ค๊ธฐ๋ณด๋ค ์ ๋ฌธํ๋ ์ ์ฅ์์ ์์ฑํ๋ ๊ธ์ด์์! ๊ณฐํ๊น๋์ ๊ฐ์(ํ๋จ์ ๋งํฌ) ๋ฅผ ๋ค์ผ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ, ์๊ฐ๋ค์ ์์ฑํ ์์ ์ด์์. ํ๋ฆฐ ๋ถ๋ถ์ด๋ ์ถ๊ฐํ๋ฉด ์ข์ ๋ถ๋ถ์ ๋ํ ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค :]
๐ง๐ปโ๐ป ๊ทธ๋ฆผ์ผ๋ก Operators ์ดํดํ๊ธฐ
๊ทธ๋ฆผ ์ดํดํ๊ธฐ
์ฐ์ , ์์ ๊ทธ๋ฆผ์ ํด์ํ๋ ๋ฐฉ๋ฒ์ ๋งํด๋ณผ๊ฒ์.
๋นจ๊ฐ์ ๊ตฌ์ฌ์ ๋ง๋ธ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํด์.
๊ทธ ์๋ ํ์ดํ๋ ์คํธ๋ฆผ(Stream)์ด์์. ํน์ ์คํธ๋ฆผ์ด ๋ฌด์์ธ์ง ๊ถ๊ธํ์๋ค๋ฉด 2ํธ์ ๋ณด๊ณ ์ค์๋ฉด ์ข์ ๊ฒ ๊ฐ์์!
๊ทธ ํ์ดํ์ ์ธ๋ก๋ก ๊ทธ์ด์ง ์ ์ ๋ฐ์ดํฐ๊ฐ ๊ทธ ์ง์ ์์ ๋๋๋ค(completion) ๋ ๊ฒ์ ์๋ฏธํด์. ๊ทธ๋ ๊ฒ๋๋ฉด dispose bag์์ ์ฌ๋ผ์ง๊ฒ๋์ฃ !
๊ทธ๋ผ ์ด์ ํ๋ํ๋ Operators๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ์ดํดํด๋ณผ๊ฒ์!
โ๏ธ Operators
Just
๋ค์ ๊ฐ์ ๊ทธ๋ฆผ์ ๋ณผ๊ฒ์. ์์ ๊ทธ๋ฆผ์ ํด์ํ๋ฉด Just๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๊ทธ๋๋ก ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ง์ด๋ฃ์ด์. ๋นจ๊ฐ ๊ตฌ์ฌ์ด ๋ค์ด์ ๋นจ๊ฐ ๊ตฌ์ฌ์ด ๋๊ฐ๋ ๊ตฌ์กฐ์์!
From
From์ Array(Data)๋ฅผ ์ง์ด๋ฃ์์์ฃ ! Array๋ฅผ ๋ฃ์ด์ ํ๋ ํ๋์ฉ Stream์ ์ง์ด๋ฃ์ด์ค์.
Map
์ด๋ฏธ์ง๊ฐ ์ง๊ธ๊น์ง์๋ ์กฐ๊ธ ๋ค๋ฅด์ฃ ? ๊ณต์ ํํ์ด์ง์์ map์ ์๋ ๋ง๋ธ์ ์ง์ ์์ง์ผ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ ์ ์ด๋ฒ์ ์์๋ stream์ด ์๋ค๋ ์ฌ์ค์ด์์.
์ฆ, map์ Just๋ From์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์คํธ๋ฆผ์ ๋ฐํํ๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ์คํธ๋ฆผ์์ ์คํธ๋ฆผ ์ฌ์ด์ ์ฐ๊ฒฐ์๋ก ์ญํ ํ๋ค๋ ๊ฒ์ ์ ์ ์์ด์.
Filter
filter ์ญ์ ์ดํดํ๊ธฐ ์ฌ์์. ์คํธ๋ฆผ์ ๋ฐ์์ filter๋ฅผ ํตํด 10 ์ด๊ณผ์ ๊ฐ๋ง ๋ค์ stream์ผ๋ก ๋๊ฒจ์ฃผ๋ ๊ตฌ์กฐ์์.
First
๋ง ๊ทธ๋๋ก stream์์ ์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ๋ง ๋๊ฒจ์ค์. complete bar์ ์์น๊ฐ ์ค์ํ๋ฐ first์ ๊ฒฝ์ฐ map๊ณผ filter์ ๋ค๋ฅด๊ฒ first ์ด์ stream์ complete ์์ ์ ์ค์ํ์ง ์์์. ๊ทธ๊ฒ ์ธ์ ๊ฐ ๋์๋ ์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐ๋ ์์ ์ ๋ฐ๋ก completeํด์.
Single
Single์ ๊ดํด์๋ ๋ค์ ์์ธํ ์ค๋ช ํ๊ฒ ์ง๋ง, ์ฐ์ ๊ทธ๋ฆผ์ ์ดํดํ๋ ๊ณณ์์ ๋์์ผ๋ ๊ฐ๋จํ ์ดํด๋ณผ๊ฒ์!
Single์ (๋นจ, ์ด, ํ)์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋ ์๋ฌ๊ฐ ๋ฌ์ด์. ๋ฐ๋ฉด์ ๋นจ๊ฐ์ ๋ง๋ธ๋ง ๋ฐ์์ ๋์๋ ์ ์์ ์ผ๋ก ๋๊ฒจ์ค์. X ๋งํฌ๋ ์๋ฌ๋ฅผ ๋ปํด์.
๊ทธ๋ฆผ์ ์์ธํ ๋ณด๋ฉด, single์ด ๋์ํ๋ ์์ ์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๋๊ธฐ๊ณ complete bar ์์ ์ ๋ง๋ธ์ ๋๊ฒจ์ค์. ๋ฐ๋ฉด์, ๊ทธ ๋๊ฒจ์ค์ผ ํ๋ ์์ (์ฒซ๋ฒ์งธ ์์๋ฅผ ์ง๋ ์์ )์ complete bar๊ฐ ์๊ณ ๋ค๋ฅธ ๋ฐ์ดํฐ(์ฌ๊ธฐ์๋ ์ด๋ก์)์ด ์๋ค๋ฉด ๊ทธ ์์ ์ ์๋ฌ๋ฅผ ์ผ์ผํค๋ ๊ฑฐ์์.
์ฆ, Single์ first์ฒ๋ผ ํ๊ฐ์ง ์์๋ฅผ ๋๊ธฐ์ง๋ง first์ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ฆ์ ๋๊ฒจ์ฃผ๊ณ complete ํ๋๊ฒ ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ๊ทธ ๋ค์ complete bar๊ฐ ์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ์๋ฌ๊ฐ ์ผ์ด๋ ์ง, stream์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค ์ง๊ฐ ๊ฒฐ์ ๋์.
Single(์ด๋ค ๊ฐ)
์ ์ํฉ๊ณผ ๋น์ทํ์ง๋ง ์ด๋ฒ์๋ Single์ ์ด๋ค ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ตฌ์กฐ์์. ๊ทธ๋ฆผ์์๋ ์ด๋ก์ ๋ง๋ธ์ด๋ค์. ์ด ๊ฒฝ์ฐ๋ ๋จ์ํ single๊ณผ ๋ค๋ฅด๊ฒ ์ด๋ก์ ๊ฐ์ด ์์ผ๋ฉด ๋๊ฒจ๋ฐ๋ ๋ฐ์ดํฐ๊ฐ 2๊ฐ ์ด์์ด์ฌ๋ complete bar ์์ ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค์. ํ์ง๋ง ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ ๊ฒฝ์ฐ ์ด๋ก์ ๋ง๋ธ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๋ฅผ ์ผ์ผ์ผ์.
FlatMap
์ด๊ฑด Map๊ณผ ์กฐ๊ธ ๋ฌ๋ผ์! Map์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์์ ๋ ๋ฐ์ดํฐ๊ฐ ๋์๋๋ฐ, ์ฌ๊ธฐ์๋ ๊ทธ๋ฆผ์ด ์กฐ๊ธ ๋ค๋ฅด์ฃ ? ๋๊ทธ๋ ๋ง๋ธ์ ๋ฃ์์ ๋(๋ฐ์ดํฐ๋ฅผ ๋ฃ์์ ๋) FlatMap์ ๋ค์ด์๋ชฌ๋ 2๊ฐ๋ฅผ ๊ฐ์ง stream์ ๋ฐํํด์. ๊ทธ๋์ ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋นจ๊ฐ ๋ฐ์ดํฐ๋ฅผ flatํ๊ฒ ๋ง๋ค์ด์ ๋ค์ด์ 2๊ฐ๋ก ๋ง๋ค์ด์ฃผ๊ณ , ์ด๋ก ๋ง๋ธ์ ๋ฃ์ด 2๊ฐ์ ๋ค์ด์๋ฅผ ๋ง๋ค๋ ์ค ๊ทธ๊ฒ ์๋ฃ๋๊ธฐ ์ ์ ํ๋ ๋ง๋ธ์ด ๋ค์ด๊ฐ์ ํ๋ ๋ค์ด์๊ฐ ๋จผ์ ๋์ค๋ ์์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ด์.
์ด๊ฑธ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋, ํ๋์ ๋ฐ์ดํฐ flat ์์ ๊ณผ ๋ค๋ฅธ ๋ฐ์ดํฐ flat ์์ ์ด concurrentํ๊ฒ ์ผ์ด๋จ์ ์ ์ ์์ด์.
๐ Marble๋ก RxSwift ์ฐ์ตํ๊ธฐ
rxmarbles์ ๊ฐ๋ฉด RxSwift์ ๋ค์ํ Operators๋ฅผ ์์ ๊ทธ๋ฆผ์ฒ๋ผ marble๋ก ์ฐ์ตํด๋ณผ ์ ์์ด์.
4ํธ์์๋ next, error, complete์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
'iOS ์ฑ๊ฐ๋ฐ > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] - RxSwift ๊ฐ๋ ์ดํดํ๊ธฐ_05 (0) | 2021.10.24 |
---|---|
[iOS] - RxSwift ๊ฐ๋ ์ดํดํ๊ธฐ_04 (0) | 2021.10.24 |
[iOS] - RxSwift ๊ฐ๋ ์ดํดํ๊ธฐ_02 (0) | 2021.10.17 |
[iOS] - RxSwift ๊ฐ๋ ์ดํดํ๊ธฐ_01 (0) | 2021.10.17 |
[iOS] - Texture ์ค์นํ๊ธฐ (0) | 2021.08.20 |
- Total
- Today
- Yesterday
- NumberofDiscIntersections#Codility#Sort#Python
- ํ ํ๋ก์ ํธ#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์ฟผ๋ํธ๋ฆฌ#BOJ#๋ถํ ์ ๋ณต#Python
- N์ผ๋ก ํํ#DP#Programmers#Python
- ๋์ ์๋ฅด๊ธฐ#์ด๋ถํ์#BOJ#Python
- ๋ณ๋ ๋์ดํธ#BOJ#ํ์๋ฒ#Python
- django
- ๊ณต์ ๊ธฐ ์ค์น#BOJ#์ด๋ถํ์#Python
- ํ ๋งํ #๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- Swift#Tuples#Range
- ์ฌ์๊ฐ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์ํธ์ฝ๋#dp#BOJ#Python
- django#slicing
- Distinct#Codility#Python
- ๋ฐฐ์ดํฉ์น๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ#BackTracking
- ๋ฆฌ๋ชจ์ปจ#์์ ํ์#BOJ#Python
- ๋ฏธ๋ก ํ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ์ข ์ด์๋ฅด๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- ๋๋ฌด์๋ฅด๊ธฐ#BOJ#์ด๋ถํ์#Python
- Brackets#Stacks and Queues#Codility#Python
- ์์ด์ฌ์ดํด#BOJ#Python
- API#lazy#
- ํฐํ๋น์น#๋ฆฌ์ฝ#xbox#controller
- PassingCars#Codility#Python
- ๋ฐ๋ณต์์ด#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ๋ ์ง ๊ณ์ฐ#BOJ#์์ ํ์#Python
- ํ์ด์ฌ์๊ณ ๋ฆฌ์ฆ์ธํฐ๋ทฐ#4์ฅ
- filter#isalnum#lower
- Triangle#Sorting#Codility#Python
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |