์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
NEW

RxSwift ์™€ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

RxSwift์˜ ๊ธฐ์ดˆ์™€ ํ™œ์šฉ๋ฒ•์„ ๋‹ค๋ฃจ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค

11๋ช… ์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์–ด์š”.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[iOS, RxSwift] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • RxSwift์™€ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ

  • RxSwift ์˜ ์—ฌ๋Ÿฌ Operator ํ™œ์šฉ๋ฒ•

  • ReactorKit ์ƒํƒœ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ Rxํ™œ์šฉ

  • CoreData ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ CRUD

  • AutoLayout๊ณผ SnapKit

๐Ÿ“˜ RxSwift๋กœ ์‹ค๋ฌด์— ๋ฐ”๋กœ ์ ์šฉํ•˜๋Š” ์•ฑ ๊ฐœ๋ฐœ ๋ฐฐ์šฐ๊ธฐ ๐Ÿ“˜

์„œ๋ธŒํƒ€์ดํ‹€: ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” RxSwift์˜ ๋ชจ๋“  ๊ฒƒ!

RxSwift์˜ ๊ฐ•๋ ฅํ•จ์„ ๊ฒฝํ—˜ํ•˜์„ธ์š”!

  • RxSwift ์˜ ๊ธฐ์ดˆ ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ˆœํžˆ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๋Š” ๊ฐ•์˜๊ฐ€ ์•„๋‹Œ ์–ด๋–ป๊ฒŒ ํ™œ์šฉ ํ• ์ง€๋ฅผ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ง์ ‘ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ RxSwift ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฒด๊ฐํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • ๋ฏธ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ•ด๋ณด๋ฉฐ ํ•™์Šต์„ ๊ทน๋Œ€ํ™” ํ•˜์„ธ์š”

  • ReactorKit๊ณผ ์กฐํ•ฉ์œผ๋กœ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋งค๋ ฅ์„ ๋А๋ผ๋ฉฐ, ๋” ๋‚˜์€ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”.


  • ์‹ค๋ฌด์—์„œ์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๊ณ , ์•ฑ ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜์„ธ์š”.

์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ์š”

RxSwift์˜ ๊ธฐ์ดˆ์™€ ๊ฐœ๋…

  • RxSwift์˜ ํ•„์š”์„ฑ: ์™œ RxSwift๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ณ , ๊ธฐ์กด ๋ฌธ์ œ์ ์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • Observable๊ณผ Subject: Observable์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ Subject์˜ ์ฐจ์ด์ ์„ ๋ช…ํ™•ํžˆ ํ•ฉ๋‹ˆ๋‹ค.

RxSwift์˜ ์—ฌ๋Ÿฌ ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ํ™œ์šฉ

  • flatMap๊ณผ concat: ์—ฌ๋Ÿฌ Observable์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • filter์™€ compactMap: ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ  ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.

  • withLatestFrom: ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

ReactorKit ๊ตฌ์กฐ์—์„œ ํ™œ์šฉ

  • ReactorKit์˜ ํ™œ์šฉ: ReactorKit์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Action๊ณผ State ์ •์˜: Reactor๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Action๊ณผ State๋ฅผ ์ •์˜ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

  • Reactor์™€ UI ๋ฐ”์ธ๋”ฉ: Reactor๋ฅผ ํ†ตํ•ด UI์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.

UI ๊ตฌ์„ฑ์— ํ™œ์šฉ

  • TableView ๋ชฉ๋ก ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ: TableView์™€ RxSwift๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • TextField์™€ Button: RxCocoa์™€ ํ•จ๊ป˜ TextField์™€ Button์„ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.

  • AutoLayout๊ณผ SnapKit: SnapKit์„ ํ™œ์šฉํ•˜์—ฌ UI ๋ ˆ์ด์•„์›ƒ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • Swift ๋ฌธ๋ฒ•์˜ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


  • ๋ฌด๋‹จ ๋ฐฐํฌ ๋ฐ ๋ณต์ œ๋ฅผ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต ์ž๋ฃŒ ์—ญ์‹œ ์ €์ž‘๊ถŒ์ด ์žˆ์œผ๋ฉฐ, ๊ฐœ์ธ์ ์ธ ํ•™์Šต ๋ชฉ์  ์™ธ ์‚ฌ์šฉ์„ ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • RxSwift์™€ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์‹ค์ œ ํ™œ์šฉ์„ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„

  • TCA, ReactorKit ๊ฐ™์€ ์ƒํƒœ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฝํ—˜ํ•˜๊ณ ์‹ถ์œผ์‹  ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Swift

์•ˆ๋…•ํ•˜์„ธ์š”
๋ค๋ฒจ๋กœํผ์ž…๋‹ˆ๋‹ค.

343

๋ช…

์ˆ˜๊ฐ•์ƒ

17

๊ฐœ

์ˆ˜๊ฐ•ํ‰

23

๊ฐœ

๋‹ต๋ณ€

4.5

์ 

๊ฐ•์˜ ํ‰์ 

4

๊ฐœ

๊ฐ•์˜

6๋…„์ฐจ iOS ๊ฐœ๋ฐœ์ž ๋ค๋ฒจ๋กœํผ์ž…๋‹ˆ๋‹ค

ํ˜„์—…์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜

์ดˆ์ค‘๊ธ‰ ๋ ˆ๋ฒจ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฐ•์˜๋ฅผ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค

 

 

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

53๊ฐœ โˆ™ (5์‹œ๊ฐ„ 4๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!