๐ฌ ํ๋ก์ ํธ ์ด๋ฆ: 4์กฐ ์ํ ์๋งค ์ฑํ๋ก์ ํธ ์๊ฐํ๋ก์ ํธ ์ผ์ : 2024.07.23 - 07.28(6์ผ๊ฐ) ์ด๋ฒ ํ๋ก์ ํธ๋ ๋ฐ์ดํฐ CRUD ๋ฐ ์ธ๋ถ API ์์ฒญ์ ์ ์ฉํด๋ณด๋ ๊ฒฝํ์ ๋ชฉํ๋ก ํฉ๋๋ค.TMDB API๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ๋ฐ์ดํฐ๋ฅผ ํธ์ถํ๊ณ ์ด๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ํ๋ฅผ ๊ฒ์ํ๊ณ ์๋งคํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์์ฐ ์์https://github.com/dkswlgus0314/NBC_iOS_4Team.git ์ญํ ๋ถ๋ด๊น๊ดํ: ๋ฉ์ธ ํ๋ฉด, ํ๋จ ํญ๋ฐ์์งํ: ์ํ ์์ธํ์ด์ง, ์๋งคํ๊ธฐ ๋ชจ๋ฌ ํ๋ฉด, NetworkManager์ด์ฃผํฌ: ์๋งคํ๊ธฐ ๋ด์ญ ํ๋ฉด, ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ด์ญ ํ๋ฉด์ด์ง๊ท: ๋ก๊ทธ์ธ ํ๋ฉด, ํ์๊ฐ์
ํ๋ฉด์ ์นํ: ๋ง์ดํ์ด์ง ํ๋ฉด, ๊ฒ์ํ๋ฉด ์ฌ์ฉ ๊ธฐ์ ํ์
ํด: GitHub, Figma์ธ์ด:..
๐ฅ Sparta_iOS_4๊ธฐ/7๏ธโฃ 240729_4์กฐ_์ํ ์๋งค ์ฑ
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..