/////
Search
Duplicate

ํ‚ต์ž‡ (KeepIt!)

์ƒ์„ฑ ์ผ์‹œ
2022/08/27 07:04
ํƒœ๊ทธ
๊ฐœ์ธํ”„๋กœ์ ํŠธ
๊ธฐ๊ฐ„
2021.09
์‚ฌ์šฉ์–ธ์–ด ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Swift
MVVM
SnapKit
Combine
Alamofire

Topic

โ€ข
๋˜‘๋˜‘ํ•œ ์˜จ๋ผ์ธ ์‡ผํ•‘ ๋ฆฌ๋งˆ์ธ๋”

Summary

๊ฐ„ํ˜น ๊ตฌ๋งคํ•˜๊ธฐ๋กœ ํ–ˆ๋˜ ๋ฌผํ’ˆ์„ ๊นŒ๋จน์–ด ๊ณจ์น˜ ์•„ํŒ ๋˜ ์ ์ด ๋งŽ์•˜๋Š”๋ฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌผํ’ˆ์„ ๋“ฑ๋กํ•ด๋‘๋ฉด ์ฃผ๊ธฐ์ ์œผ๋กœ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌผํ’ˆ ๊ตฌ๋งค๋ฅผ ์žŠ์ง€ ์•Š๋„๋ก ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‡ผํ•‘๋ชฐ ๋งํฌ๋ฅผ ๋ณต์‚ฌํ•ด๋‘” ์ฑ„ ์•ฑ์„ ํ‚ค๊ฒŒ ๋˜๋ฉด, ์ž๋™์œผ๋กœ ๋ฌผํ’ˆ์„ ์ธ์‹ํ•˜์—ฌ ๋“ฑ๋ก ํŽ˜์ด์ง€๋กœ ์•ˆ๋‚ดํ•ด์ฃผ์–ด ํŽธ์˜์„ฑ์„ ๊ฐ•์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Key Function

โ€ข
๊ตฌ๋งคํ•  ๋ฌผํ’ˆ์˜ ์ด๋ฆ„, ์ด๋ฏธ์ง€, ๊ฐ€๊ฒฉ, ๋ฉ”๋ชจ, ์ค‘์š”๋„ ๋“ฑ์„ ์ž…๋ ฅํ•˜์—ฌย ์•ฑ์— ๋“ฑ๋กย -ย ๊ตฌํ˜„์™„๋ฃŒ
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ ๋“ฑ๋กํ•ด๋‘” ๋ฌผํ’ˆ์„ ์ตœ์‹ ์ˆœ, ์ค‘์š”๋„์ˆœ, ๊ฐ€๊ฒฉ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ณด์—ฌ์คŒ -ย ๊ตฌํ˜„์™„๋ฃŒ
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ ๋“ฑ๋กํ•ด๋‘”ย ๋ฌผํ’ˆ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ย ๊ธฐ๋Šฅ ์ œ๊ณต -ย ๊ตฌํ˜„์™„๋ฃŒ
โ€ข
์•„์ง ๊ตฌ๋งคํ•˜์ง€ ์•Š์€ ๋ฌผํ’ˆ์— ๋Œ€ํ•˜์—ฌย ์ •๊ธฐ์ ์œผ๋กœย ํ‘ธ์‹œ์•Œ๋ฆผ ์ œ๊ณต
โ€ข
ํด๋ฆฝ๋ณด๋“œ์— ์‡ผํ•‘๋ชฐ ๋งํฌ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด,ย ๋ฌผํ’ˆ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์คŒ(Open Graph ํŒŒ์‹ฑ)

Tech Stack

Swiftย ,ย ViewModelย ,ย CoreDataย ,ย Combineย ,ย CombineCocoaย ,ย OpenGraph,ย Differ

Architecture

โ€ข
MVVM

Part

โ€ข
๊ฐœ์ธ ํ”„๋กœ์ ํŠธ(๊ฐœ๋ฐœ)

Learned

โ€ข
MVVM ํŒจํ„ด์„ ์ฒ˜์Œ์œผ๋กœ ๋„์ž…ํ•ด๋ณด๋ฉฐ,ย ํŒจํ„ด์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Œ.
โ€ข
*Combine**ย ์„ ์‚ฌ์šฉํ•˜์—ฌย ViewController์˜ ์˜์กด๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด๋ณด์•˜๊ณ , ๊ทธ ๊ณผ์ • ์†์—์„œย ViewModel์˜ ์—ญํ• ย ๋˜ํ•œ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Œ.
โ€ข
๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ทธ๋ƒฅย *DispatchQueue**ย ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค ๋˜๋Š”์ค„ ์•Œ์•„์„œ ๋ง‰ ๋„ฃ๋Š” ๋ฐ”๋žŒ์— ์—ฌ๋Ÿฌ ๋™์ž‘๋“ค์ด ๊ผฌ์—ฌ ๋”œ๋ ˆ์ด๊ฐ€ ์ƒ๊ฒผ์—ˆ์ง€๋งŒ, ๊ฐย ๋ชฉ์ ์— ๋”ฐ๋ผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌย ๊ตฌํ˜„ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•จ.
โ€ข
SearchBar์˜ ๊ฒ€์ƒ‰ ํ…€์„ย *debounceย ๋กœ ์ฒ˜๋ฆฌํ•ด๋ณด๋ฉด์„œย *Combineย ์˜ ์˜คํผ๋ ˆ์ดํ„ฐ๋“ค์„ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Œ.

Screenshot