์๋ฅํ์ธ์! ์ค๋๋ ์ด๊น์์ด TIL์ ์ฐ๋ฌ ์จ ์ ์์๐
ํ.. ์ค๋์ "์ฝ์ด๋ฐ์ดํฐ" ์น๊ตฌ๋ ํ ํ ๋ถ์๋๋ฐ์?!
๊ทธ๋ฅ ์ ธ๋ฒ๋ ธ์ต๋๋ค...ใ
๊ทธ๋๋ ๊ณ์ ์ธ์๋ด์ผ์ฃ ..!
์ค์ํ๊ฑด ๊บพ์๋๋ฐ๋ ๊ทธ๋ฅ ํ๋ ๋ง์์ด๋๊น์.
์ฝ์ด๋ฐ์ดํฐ
์ฝ์ด๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ํด์ฃผ๋ Apple์์ ์ ๊ณต๋๋ Framework ์์! ์๊ตฌ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์์ด๋ก permanent data ๋ผ๊ณ ํ๋๋ฐ์. ๋๋ฐ์ด์ค์ permanent data๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ์น๊ตฌ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชฐ๋ผ๋ ๋๋ฐ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ๋์์ฃผ๋ ์ผ๋ง๋ ๊ธฐํนํ ์น๊ตฌ์์!
์ธํฐ๋ท์์ ์ฐพ์๋ณด๋ ์ด๋ ค์ด ์ฉ์ด๋ก ๊ฐ์ฒด ๊ทธ๋ํ ๊ด๋ฆฌ ํ๋ ์์ํฌ๋ผ๊ณ ํ๋๋ฐ, ์ฝ๊ฒ ๋งํด์ Swift๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์์?! ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ ธ ์์ฃ ! ์ด๋ฐ ๊ฐ์ฒด๋ค๋ผ๋ฆฌ ์ด๋ ํ ๊ด๊ณ๊ฐ ์ด๋ฃจ์ด์ ธ ์์ ํ ๋ฐ ๊ทธ๊ฑธ ๊ฐ์ฒด ๊ทธ๋ํ!๋ผ๊ณ ํ๊ณ ์ฝ์ด๋ฐ์ดํฐ๋ ์ด ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์น๊ตฌ์ธ ๊ฑฐ์ฃ !
์ฐ์ ์ฝ์ด๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฝ์ด๋ฐ์ดํฐ์ ์ฒด๊ณ๊ฐ ์ด๋ป๊ฒ ๋์ด์๋๋ฅผ ์์์ผ ํฉ๋๋ค!
์ฝ์ด๋ฐ์ดํฐ์ ์ฒด๊ณ
์ฝ์ด๋ฐ์ดํฐ๋ Persistent Store, Persistent Store Coodinator, ManagedObject, ManagedObject Context๋ก ๋๋ฉ๋๋ค.
๋ค? Persistent ๊ฐ ๋ญ๋๊ณ ์? ๋ค? ManagedObject๊ฐ ๋ญ๋๊ตฌ์?
์.. ์ฐฌ์ฐฌํ ๋ฐ๋ผ์ค์ธ์!
ManageObject
ManageObject๋ ์ฐ๋ฆฌ๊ฐ ์ค์ ์ ์ผ๋ก ๋ค๋ฃจ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๊ฐ์ฒด์ ๋๋ค. Entity์ ์ธ์คํด์ค์ด๊ธฐ๋ ํ๋๋ฐ์. ์ด๋์ Entity๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ผ์. ์ ๊ฐ ๋ค๋ฃจ๋ todoList์ ์ฑ์ ์์๋ก ๋ค์๋ฉด, todoList์ ์ฑ์๋ todoData๊ฐ ์๊ณ ์ด todoData์ ์์์๋ ๋ ์ง๋ฅผ ๋ค๋ฃจ๋ Date, todo ์ด๋ฆ์ ๊ฐ์ง๋ title, ๊ณ ์ ๋๋ฒ๊ฐ์ ๊ฐ์ง๋ id ๋ฑ์ด ์์ด์. ์ด๋ "todoData" ์๊ฐ Entity์ ๋๋ค. ๊ทธ๋ผ ManageObject๋ todoData์ ์ธ์คํด์ค๊ฐ ๋๊ฒ ์ฃ ?
ํ๋์ ์ฑ์๋ ํ ๊ฐ์ง์ ๋ฐ์ดํฐ ์งํฉ๋ง ์์ผ๋ผ๋ ๋ฒ์ด ์์ฃ ! ์ฌ๋ฌ ๊ฐ์ง ๋ฐ์ดํฐ์ ์งํฉ์ด ์์ ์๋ ์์ต๋๋ค. ์ด๋ฐ ๋ฐ์ดํฐ๋ค ๊ฐ์ ๊ด๊ณ๋ ๋งบ๊ฒ ์ฃ ? ManageObject ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค๋ฅธ ManageObject ๋ค๊ณผ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค. ๊ฐ์ฒด ๊ฐ์ ๋ณต์กํ ์ํธ์์ฉ์ ํํํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ฃ .
์ด์จ๋ ManageObject๋ ์ฝ์ด๋ฐ์ดํฐ์ ํต์ฌ์ ๋๋ค!!
Manage Object Context
Manage Object Context๋ ์์์ ์ค๋ช ํ Manage Object๋ฅผ ๊ด๋ฆฌํ๋ ๊ณณ์ด์์. ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋! ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ค์ ์ถ์ ํ๊ณ ๊ฐ์ํฉ๋๋ค. ๊ฐ์ํ๊ณ ์๋ค๊ฐ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ๊ทธ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ์์ ์ ํ๋ ๊ฑฐ์ฃ . ํ์ง๋ง ์ฌ๊ธฐ์ ๋ณ๊ฒฝ์ด ๋๋ค๊ณ ์๊ตฌ์ ์ธ ์ ์ฅ์๋ก ๋ฐ๋ก ์ ์ฅ์ด ๋๋ ๊ฒ ์๋์์! ์ด๋ฌํ ๋ฐ์ดํฐ๋ค์ Persistent Store Coordinator์๊ฒ ์ ๋ฌํ์ฌ ๊ทธ ์น๊ตฌ๊ฐ ์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ์์ธ Persistent Store๋ก ์ ์ฅํฉ๋๋ค.
Persistent Store Coodinator
์์์ ์ด๋ฏธ ์ค๋ช ํ์ง๋ง Persistent Store Coodinator๋ Manage Object์ Persistent Store ์ฌ์ด์ ์ค๊ฐ ์ญํ ์ ํฉ๋๋ค. Manage Object์์ ๋ณ๊ฒฝ๋ ์ฌํญ๋ค์ด Manage Object Context๋ฅผ ํตํด ์ด Persistent Store Coodinator์๊ฒ ์ ๋ฌ์ด ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ค์ Persistent Store์ ์ ๋ฌ์ ํ์ฌ ์ ์ฅํ ์ ์๊ฒ ๋๋ ๊ฑฐ์ฃ . ๊ทผ๋ฐ ์ค๊ฐ์๊ฐ ์ ํ์ํ ๊น์? ๊ทธ๊ฑด ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ๋ฌ์ค๊ธฐ๋ ํ๊ณ ์ ์ฅํ๊ธฐ๋ ํ๋๋ฐ ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋งค๊ฐ์ฒด๊ฐ ํ์ํ ๊ฒ์ด์ฃ . ํ์ํ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ์์ ๋ ํ๋ต๋๋ค.
Persistent Store
persistent store๋ Managed Object์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋๋ค.
์ด๋ ๊ฒ CoreData๋ ์์ฃผ ์ฒด๊ณ์ ์ธ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ก ์ํธ์์ฉ์ ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
์ฝ์ด๋ฐ์ดํฐ ์์ฑ ๋ฐฉ๋ฒ
์๋ก์ด ํ๋ก์ ํธ ์์ฑ ์
์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ์ ๊ธฐ Core Data ๋ถ๋ถ์ ์ ํํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ด๋ฏธ ์์ฑ๋ ํ๋ก์ ํธ์ ์ถ๊ฐ ์
์๋ก์ด ํ์ผ์ ์์ฑํ ๋ค Core Data์ Data Model์ ์์ฑํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ผ ๋ด๋น๊ฒ์ด์ ํญ์ DataModel ํ์ผ์ด ์์ฑ์ด ๋ฉ๋๋ค. ํด๋ฆญํ์ฌ ๋ค์ด๊ฐ์ ์
์ผ์ชฝ ์๋์ Add Entity ๋ฒํผ์ ํด๋ฆญํ์ ์ ์๋ก์ด ๋ฐ์ดํฐ์ ์งํฉ์ ํ์ฑํ์ค ์ ์๊ณ ์. Attributes ์๋์ + ๋ฒํผ์ผ๋ก Attribute์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋ค๋ชจ ๋ฐ์ค ์์์ Attribute์ ์ด๋ฆ๊ณผ ํ์ ์ ์ ํํ ์ ์์ด์!
Editor -> Create NSManagedObject Subclass... ์ ์ ํํ์๋ฉด ์์์ ์ด์ฌํ ์ค๋ช ํ๋ ManageObject๊ฐ ์์ฑ์ด ๋ฉ๋๋ค!
์ค๋์ ์ฝ์ด๋ฐ์ดํฐ์ ๊ฐ๋ ๊ณผ ์ฝ์ด๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๊น์ง ์์๋ณด์๋๋ฐ์!
๋ค์ ์๊ฐ์ ์ข ๋ ์์ธํ๊ฒ ์ฝ์ด๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ด ์๋ค!!!
์ฌ์ค todoList ์ฑ์ ์ฝ์ด๋ฐ์ดํฐ ์ ์ฉํ๋ค๊ฐ ์จ๊ฐ ๋นจ๊ฐ ์ค์ด ์๋ํด์ ๋จธ๋ฆฌ๊ฐ ๋๋ฌด ์ด์ง๋ฝ์ต๋๋ค.
๊ฒจ์ฐ๊ฒจ์ฐ ๋นจ๊ฐ ์ค์ ๋ค ์์ด์ง๋ง ์ ๊ฐ ๋ง๋ค์ด ๋์๋ ์ญ์ ๊ธฐ๋ฅ์ ์์ด์ง ์ง ์ค๋์์ ใ ใ ใ
์ค์ํ ๊ฑด ๊บพ์๋๋ฐ๋ ๋ค์ ํ๋ ๋ง์!!!!! ๋ด์ผ ๋ค์ ์๋ํด ๋ณผ๊ฒ์ใ ใ
๊ทธ๋ผ ์๋~~~!!!!!!๐ฉต