๐Ÿฅ Sparta_iOS_4๊ธฐ/7๏ธโƒฃ 240729_4์กฐ_์˜ํ™” ์˜ˆ๋งค ์•ฑ

๐ŸŽฌ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„: 4์กฐ ์˜ํ™” ์˜ˆ๋งค ์•ฑํ”„๋กœ์ ํŠธ ์†Œ๊ฐœํ”„๋กœ์ ํŠธ ์ผ์ • : 2024.07.23 - 07.28(6์ผ๊ฐ„) ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๋ฐ์ดํ„ฐ CRUD ๋ฐ ์™ธ๋ถ€ API ์š”์ฒญ์„ ์ ์šฉํ•ด๋ณด๋Š” ๊ฒฝํ—˜์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.TMDB API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ํ™” ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์˜ํ™”๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์˜ˆ๋งคํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.  ์‹œ์—ฐ ์˜์ƒhttps://github.com/dkswlgus0314/NBC_iOS_4Team.git   ์—ญํ•  ๋ถ„๋‹ด๊น€๊ด‘ํ˜„: ๋ฉ”์ธ ํ™”๋ฉด, ํ•˜๋‹จ ํƒญ๋ฐ”์•ˆ์ง€ํ˜„: ์˜ํ™” ์ƒ์„ธํŽ˜์ด์ง€, ์˜ˆ๋งคํ•˜๊ธฐ ๋ชจ๋‹ฌ ํ™”๋ฉด, NetworkManager์ด์ฃผํฌ: ์˜ˆ๋งคํ•˜๊ธฐ ๋‚ด์—ญ ํ™”๋ฉด, ์ฆ๊ฒจ์ฐพ๊ธฐ ๋‚ด์—ญ ํ™”๋ฉด์ด์ง„๊ทœ: ๋กœ๊ทธ์ธ ํ™”๋ฉด, ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด์ ์Šนํ˜„: ๋งˆ์ดํŽ˜์ด์ง€ ํ™”๋ฉด, ๊ฒ€์ƒ‰ํ™”๋ฉด  ์‚ฌ์šฉ ๊ธฐ์ˆ ํ˜‘์—…ํˆด: GitHub, Figma์–ธ์–ด:..
https://developer-fury.tistory.com/56#google_vignette   ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋‹ฌ ์ฐฝ๋งŒ ๋‹ซํžˆ๊ณ  ํ™”๋ฉด ์ „ํ™˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.     ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€ ์•Š์•˜๋Š”๋ฐ ์ž๋™์œผ๋กœ ๋ชจ๋‹ฌ๋กœ ํŽ˜์ด์ง€ ์ „ํ™˜์ด ์ด๋ฃจ์–ด์ง€๋Š” ์ƒํ™ฉ.๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ชจ๋‹ฌ์—์„œ๋Š” ๋’ค๋กœ๊ฐ€๊ธฐ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ MovieInfoViewController.swift   ModalViewController.swift   ๋ชจ๋‹ฌ์—์„œ ๋ทฐ์ปจ์€ ์•ˆ๋˜๋Š”๋ฐ๋ชจ๋‹ฌ์—์„œ ๋ชจ๋‹ฌ์€ ๊ฐ€๋Šฅ?ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
์˜ˆ๋งคํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ•˜ํ”„๋ชจ๋‹ฌ์„ ๋„์›Œ์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค. ์‚ฌ์‹ค ์ง€๋‚œ ํ‚ค์˜ค์Šคํฌ ์•ฑ์„ ๊ตฌํ˜„ํ•  ๋•Œ์™€๋„ ๋น„์Šทํ•˜๋‹ค. ๊ทธ์น˜๋งŒ ๊ทธ๋•Œ๋ณด๋‹ค ์ง€๊ธˆ ๊ณ ๋ฏผ์ด ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด, ์˜ˆ๋งคํ•˜๊ธฐ ๋ฒ„ํŠผ์€ ๋ทฐ์— ์žˆ๊ณ  ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ addTarget์œผ๋กœ ๋ชจ๋‹ฌ์„ ๋„์šฐ๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ, ๋ณ„๋„์˜ ๋ทฐ์ปจ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋งŒ๋“ค์–ด ๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ๋ชจ๋‹ฌ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” present ๋ฉ”์„œ๋Š” UIViewController ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ผ UIView์—์„œ๋Š” ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค...   MovieInfoViewController.swift    MovieInfoView.swift์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.   ์ด ์˜ค๋ฅ˜๋Š” movieInfoVC ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์‹œ์ ์— self๊ฐ€ ์•„์ง ..
NetworkManager๋ฅผ ๋งŒ๋“ค๊ณ  ํŠœํ„ฐ๋‹˜์„ ์ฐพ์•„๊ฐ”๋Š”๋ฐ ์šฐ์—ฐํžˆ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.์‹ฑ๊ธ€ํ†ค ํŒจํ„ด๋ณด๋‹ค๋Š” ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ์„ ์ข€ ๋” ์„ ํ˜ธํ•˜์‹ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.  ํ•˜์ง€๋งŒ ์ง€๊ธˆ ํ”„๋กœ์ ํŠธ ์‹œ์ ์—์„œ๋Š” ์‹œ๊ฐ„๋„ ๋ถ€์กฑํ•˜๊ณ  ๊ฐœ๋…๋„ ์–ด๋ ค์›Œ์„œ ๊ณต๋ถ€ํ•˜๊ณ  ๋‹ค์Œ์— ์ข€ ๋” ์ ์šฉํ•ด๋ณผ ๊ฒƒ.  Model์— Movie, MovieDetail์„ ๋‹ด๊ณ , NetworkManager๋Š” ์™„์ „ํ•œ ๋„คํŠธ์›Œํ‚น๋งŒ ํ•  ์ˆ˜์žˆ๊ฒŒ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  NetworkManagerMock์€ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์ „์— ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋“ค์„ ์ ์–ด์ฃผ๊ณค ํ•˜๋Š”๋ฐ๊ทธ๋Ÿด ํ•„์š”์—†์ด ์ด๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•ด๋‘๊ณ  ๋ถˆ๋Ÿฌ๋‹ค๊ฐ€ ์“ฐ๊ณ  NetworkManager๊ฐ€ ๋‹ค ์™„์„ฑ๋๋‹ค๋ฉดMock ์ด 4๊ธ€์ž๋งŒ ์ง€์šฐ๊ณ  ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ๊ฐ„๋‹จํ•ด์ง„๋‹ค.     ์ด๋•Œ์˜ ์žฅ์ ์˜ ๋ชจ๋“ˆํ™”์™€ ๋‚ฎ์€ ์˜์กด์„ฑ์ด ํ•ต์‹ฌ.  ..
๊ธฐ๋ณธ ์ด์Šˆ ๋“ฑ๋ก ์™„๋ฃŒ UI ๊ตฌํ˜„ ์™„๋ฃŒ ๋ชฉํ‘œURLSession ๋ชจ๋ธ๋ง   ์ด๋Ÿฐ์‹์œผ๋กœ ํ†ต์ผ์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉ์ข€ ๋” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„ํŠผ์˜ ํ˜•ํƒœ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ๋งˆ์ €๋„ extention๊ณผ struct๋กœ ๋นผ์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋“ˆํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ์งฑ์งฑ...!! ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ์šฐ๋ฆฌ ์กฐ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฉ”์ธ ์ƒ‰์ƒ์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ํฐํŠธ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ์ผ์ผ์ด ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•ด๋‹น ํŒŒ์ผ์—์„œ ๋ฐ”๊พธ๊ธฐ๋งŒ ํ•˜๋ฉด ํ•œ๋ฒˆ์— ์ „์ฒด๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ.
struct Font { let name: String let size: CGFloat func font() -> UIFont? { return UIFont(name: name, size: size) }}struct FontNames { static let mainFont: Font = Font(name: "LINESeedSansKR-Bold", size: 20.0) static let mainFont2: Font = Font(name: "LINESeedSansKR-Bold", size: 25.0) static let mainFont3: Font = Font(name: "LINESeedSansKR-Bold", size: 30.0) static let..
AHN.Jihyeon
'๐Ÿฅ Sparta_iOS_4๊ธฐ/7๏ธโƒฃ 240729_4์กฐ_์˜ํ™” ์˜ˆ๋งค ์•ฑ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก