๐Ÿฅ Sparta_iOS_4๊ธฐ

private lazy var collectionView: UICollectionView = { let collectionView = UICollectionView(frame: .zero, collectionViewLayout: createLayout()) collectionView.register(PokemonCell.self, forCellWithReuseIdentifier: PokemonCell.id) collectionView.dataSource = self collectionView.delegate = self collectionView.backgroundColor = #colorLiteral(red: 0.4334821701, gre..
Swift์—์„œ ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค๋Š” ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.  ๊ตฌ์กฐ์ฒด (Struct)๊ฐ’ ํƒ€์ž…(Value Type): ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํƒ€์ž…์ด๋‹ค. ๊ตฌ์กฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์— ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ๋•Œ, ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๋ณต์‚ฌ๋ณธ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.๋ถˆ๋ณ€์„ฑ(Immutability): ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌ์กฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.์ƒ์† ๋ถˆ๊ฐ€: ๊ตฌ์กฐ์ฒด๋Š” ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ตฌ์กฐ์ฒด๋Š” ์ƒ์† ๊ณ„์ธต์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ์ ํ•ฉํ•˜๋‹ค.์ดˆ๊ธฐํ™”: ๊ตฌ์กฐ์ฒด๋Š” ์ž๋™์œผ๋กœ ๋ฉค๋ฒ„์™€์ด์ฆˆ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ์ œ๊ณต.  ํด๋ž˜์Šค (Class)์ฐธ์กฐ ํƒ€์ž…(Reference Type): ํด๋ž˜์Šค๋Š” ์ฐธ์กฐ ํƒ€์ž…์ด๋‹ค. ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์— ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ๋•Œ, ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค์—..
๐ŸŽฌ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„: 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๊ธ€์ž๋งŒ ์ง€์šฐ๊ณ  ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ๊ฐ„๋‹จํ•ด์ง„๋‹ค.     ์ด๋•Œ์˜ ์žฅ์ ์˜ ๋ชจ๋“ˆํ™”์™€ ๋‚ฎ์€ ์˜์กด์„ฑ์ด ํ•ต์‹ฌ.  ..
AHN.Jihyeon
'๐Ÿฅ Sparta_iOS_4๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก