Model Object๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
Model object
๋ชจ๋ธ ๊ฐ์ฒด๋ MVC ๋์์ธ ํจํด ์ค Model์ ํด๋นํ๋ ์ญํ ์ ์ํํ๋ฉฐ, ๋ชจ๋ธ ๊ฐ์ฒด์ ์ฃผ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค:
- ๋ฐ์ดํฐ ํฌํจ
- ๋ฐ์ดํฐ ์ ๊ทผ
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง
๋ฐ์ดํฐ๊ฐ ํ์ผ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ ์๊ตฌ ์ํ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ก๋๋ ๋, ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ ๊ฐ์ฒด์ ์ํด์ผ ํ๋ค.
๋ชจ๋ธ ๊ฐ์ฒด๋ ํน์ง์๋ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋์ผํ ์์ญ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ง ์ ์ก ๋คํธ์ํฌ ์์ ์ ์ํ ๋ชจ๋ธ ๊ฐ์ฒด๋ ์ฌ์ง์ ์ ์กํ ๋ ํ์ํ URL ๊ตฌ์ฑ์์, RESTFul ๋ฉ์๋์ ๊ฐ์ง๊ณ ์์ด ํ๋กํ ์ฌ์ง์ด๋ ๊ฒ์๊ธ ์ฌ์ง์ด๋ ์ด๋์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์ฌ์ฉ ์ฉ๋์ ๋ฐ๋ผ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ตฌํํด์ผ MVC ๋์์ธ ํจํด์ ์ ์ ์ฉํ๋ค๊ณ ํ ์ ์๋ค.
MVC์์ View์ Model์ ๊ฐ๊ฐ ์ฌ์ฌ์ฉ์ฑ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ฒด ๊ฐ์ ๋ช ์์ ์ธ ์ฐ๊ฒฐ์ด ์๋๊ฒ ๊ฐ์ฅ ์ด์์ ์ด๋ค. ์ด๋ฌํ ํน์ง์ ๋ค๋ฅธ ๋ง๋ก, ๋ชจ๋ธ ๊ฐ์ฒด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ presentation ์ด์๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋จ์ ์๋ฏธํ๋ค
A Well-Designed Model Class ์ ์ค๊ณ๋ ๋ชจ๋ธ ํด๋์ค
๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ชจ๋ธ ํด๋์ค๋ฅผ ๊ตฌ์ฑํ ๋์ ๋ค์์ ๊ณ ๋ คํด์ผ ํ๋ค
- ์ธ์คํด์ค ๋ณ์: ์บก์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ํด ์ธ์คํด์ค ๋ณ์๋ฅผ ์ ์ธํ ์ ์๋ค.
- ์ ๊ทผ ๋ฉ์๋์ ์ ์ธ ํ๋กํผํฐ: ์ ๊ทผ ๋ฉ์๋์ ์ ์ธ ํ๋กํผํฐ๋ ์ธ์คํด์ค ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ ์ค์ฌํ์ฌ ์บก์ํ๋ฅผ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ์ ๊ทผ ๋ฉ์๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ธ์คํด์ค ๋ณ์์ ๊ฐ์ ๋ด๋ณด๋ด๊ณ (get) ์ค์ ํ๋ค(set). ์ ์ธ ํ๋กํผํฐ๋ ๋ฐํ์ ์ ํด๋์ค์ ๋ํ ์ ๊ทผ ๋ฉ์๋๋ฅผ ํฉ์ฑํ ์ ์๋๋กํ๋ ์ธ์ด ์์ค์ ํธ์ ๊ท์น์ด๋ค. ์ ๊ทผ ๋ฉ์๋์ ์ ์ธ ํ๋กํผํฐ์ ์ค์ํ ์ญํ ์ ๊ฐ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ด์ ๋ก get๊ณผ set ๋ฉ์๋ ๊ตฌํ์ ๊ถ์ฅ๋๋ ํ์์ด ์กด์ฌํ๋ค.
- Key-Value ์ฝ๋ฉ: Key- Value ์ฝ๋ฉ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ฒด์ ํ๋กํผํฐ ์ด๋ฆ์ key๋ก ์ฌ์ฉํ์ฌ ํ๋กํผํฐ์ ์ ๊ทผํ๋ ๋ฉ์นด๋์ฆ์ผ๋ก, CoreData๋ ๊ทธ๋ฐ์ Cocoa์์ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ์ ๊ทผ ๋ฉ์๋์ ์ ์ธ ํ๋กํผํฐ๋ฅผ ๋ช ๋ช ํ๋ ๊ฑด ์ด ๋ฉ์นด๋์ฆ์ ์ค์ํ ์์์ด๋ค.
- ์ด๊ธฐํ์ ํ ๋นํด์ : ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์์, ๋ชจ๋ธ ํด๋์ค๋ ์ธ์คํด์ค ๋ณ์์ ์ ๋นํ initial ๊ฐ์ ์ค์ ํ initializer ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ค. ์ด initializer ๋ฉ์๋๋ ์ ๊ณต๋๋ ํํ๊ฐ ์กด์ฌํ๋ค. ๋ํ Initializer ๋ฉ์๋๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ฒด๋ฅผ ํ ๋น ํด์ ํ๋ dealloc ๋ฉ์๋์์ ๊ฐ์ฒด์ ๊ฐ์ ๋ณด์ ํ๋ ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ํ ๋น ํด์ ํ ๊ฒ์ ๋ณด์ฅํ๋ค.
- ๊ฐ์ฒด ์ธ์ฝ๋ฉ: ๋ง์ฝ ๋ชจ๋ธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ด๋๊ฐ์ ๋ณด๊ด๋์ด์ง๋ค๋ฉด, ํด๋น ํด๋์ค๊ฐ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ธ์ฝ๋ฉ / ๋์ฝ๋ฉ ํ ์ ์๋์ง ํ์ธํ๋ผ.
- ๊ฐ์ฒด ๋ณต์ฌ: ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ธ ๊ฐ์ฒด๋ค์ ๋ณต์ฌํ ์์ ์ด๋ผ๋ฉด, ํด๋น ํด๋์ค๋ ๊ฐ์ฒด ๋ณต์ฌ๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
โ
์บก์ํ
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง ์ค ํ๋๋ก, ์บก์ํ๋ ํด๋์ค ์์ ์๋ก ์ฐ๊ด์๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ๋ค์ ํ๋์ ์บก์๋ก ๋ง๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ ๋งํ๋ค. ์ธ๋ถ๋ก๋ถํฐ ํด๋์ค์ ์ ์๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๋ณดํธํ๊ณ , ํ์ํ ๋ถ๋ถ๋ง ์ธ๋ถ๋ก ๋ ธ์ถ๋ ์ ์๋๋ก ํ์ฌ ๊ฐ ๊ฐ์ฒด ๊ณ ์ ์ ๋ ๋ฆฝ์ฑ๊ณผ ์ฑ ์์์ญ์ ์์ ํ๊ฒ ์งํค๊ณ ์ ํ๋ ๋ชฉ์ ์ด ์๋ค. - ๋ฐ์ดํฐ ๋ณดํธ / ๋ฐ์ดํฐ ์๋
์ด๋ฌํ ์บก์ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์๋ ๋ค์ 2๊ฐ์ง๊ฐ ์๋ค:
- ์ ๊ทผ ์ ์ด์ ํ์ฉ: ํด๋์ค์ ๋ด๋ถ ์์ฑ ๋ฐ ๊ธฐ๋ฅ์ ๋จ๊ณ์ ์ธ ์ ํ์ ์ค์ ํด ์ธ๋ถ์์ ํจ๋ถ๋ก ์ ๊ทผํ์ง ๋ชปํ๊ฒ ์ ํํ๋ค. ์) public, private
- get / set ๋ฉ์๋ ์ฌ์ฉ: ์ธ๋ถ์์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ค์ ํ ์ ์๋ ์์ฑ ๋๋ ๊ธฐ๋ฅ์ ์ฌ์ ์ ์ค์ ํ์ฌ ์ธ๋ถ๋ก๋ถํฐ ์ ๊ทผ์ ์ ํํ๋ค
์บก์ํ๋ฅผ ํ์ฉํ๋ฉฐ๋ ๊ฐ์ฒด์ ์์จ์ฑ, ์ฆ ํ๋์ ๊ฐ์ฒด๊ฐ ํด๋น ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๋ํ ๋ ์ ์ ์ธ ์ฑ ์์ ๋ด๋นํ๋๋ก ๋ง๋ค๊ณ , ์ด๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ๊ฒ ์ ์งํ ์ ์๋ค.
์ธ์คํด์ค ๋ณ์์ ์ ์ธ ํ๋กํผํฐ
์ธ์คํด์ค ๋ณ์๋ privateํ์ฌ ํด๋์ค์ ์๋ธ ํด๋์ค์์๋ง ์ ๊ทผํ ์ ์๋ค. ๋ฐ๋ฉด ํ๋กํผํฐ๋ publicํ์ฌ ์ธ๋ถ์์ ์ธ์คํด์ค ๋ณ์์ ๊ฐ์ ์ ๊ทผํ ๋ ๋์ ์ฌ์ฉํ ์ ์๋ค.
๋ง์ฝ ์ธ์คํด์ค ๋ณ์๋ฅผ publicํ๊ฒ ์ฌ์ฉํ๋ค๋ฉด ํ๋กํผํฐ์ ์ ์ฌํ ๊ฒ์ด๋ค. ํ์ง๋ง ์ธ์คํด์ค ๋ณ์์ ๋ค๋ฅธ ํ๋กํผํฐ์ ํน์ง์ ์ฐ์ฐ ํ๋กํผํฐ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋๋ถ์ด ํ๋กํผํฐ๋ get๊ณผ set์ด๋ผ๋ ๋ ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ค
๊ทธ๋ฆฌ๊ณ ํ๋กํผํฐ๋ ์ฌ์ค์ ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ ๋ค์ด๋๋ฏนํ ํ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, CoreData์ Key-Value ์ฝ๋ฉ์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ iOS ] ์ด๊ฑฐํ์ ์์๊ฐ์ผ๋ก ํํ ์ฌ์ฉํ๊ธฐ (2) | 2023.12.01 |
---|---|
[ iOS ] MVC - 3 ) Controller ๊ฐ์ฒด (0) | 2023.11.18 |
[ iOS ] MVC - 1) MVC๋? (1) | 2023.10.17 |
[ iOS ] Link Presentation ์์๋ณด๊ธฐ (0) | 2023.08.18 |
[ iOS ] Bounds์ Frame ๋น๊ต - 2. Size (0) | 2023.07.01 |