CoreData, Persistence - Team-HGD/SniffMEET GitHub Wiki
๊ฐ์
CoreData๋ Database๊ฐ ์๋๋ค. CoreData์ ์๋ง์ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ Persistence์ด๋ค.
Persistence ์ธ์๋ ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Undo and redo of individual and batched changes
- Background data tasks
- View synchronization
- Versioning and migration
ํ์ง๋ง ์ด ๋ฌธ์์์๋ Persistence์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ค๋ช
Core Data Stack
์ฑ ๋ชจ๋ธ์ ๊ด๋ฆฌํ๊ณ ์ ์งํ๋ ์ญํ ์ ์ํํ๋ค.
- NSManagedObjectModel
- ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ํด๋นํ๋ ์ํฐํฐ(Entity)์ ๊ทธ ์์ฑ(attribute)์ ์ ์ํ๋ ์ญํ ์ ์ํํ๋ค.
- like DB ์คํค๋ง
- ์ด ๋ชจ๋ธ์ Xcode์์
.xcdatamodeld
ํ์ผ๋ก ์ ์ํ๋ฉฐ, Entity, Attribute, Relationship ๋ฑ์ ์ค์ ํ๋ค.
- NSPersistentStoreCoordinator
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฅ์์ธ persistent storage์ managed object model๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํฉ๋๋ค.
- like transaction
- ์ด ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ฝ์ด์ค๊ณ , ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, SQLite ํ์ผ์ ์ ์ฅ์๋ก ์ฌ์ฉํ ๋ ์ด ์ ์ฅ์์์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ค.
- NSManagedObjectContext
- ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์ญ์ , ์์ ํ๋ ์์ ์ ์ํํฉ๋๋ค.
- Managed Object๋ฅผ ์์ฑํ๊ณ ์ ์ฅํ๊ณ ๊ฐ์ ธ์ค๋(fetch) ์ญํ ์ ์ํํ๋ค.
- MOC๋ ๊ฐ์ฒด ๊ทธ๋ํ์ ์ํธ์์ฉํ๋๋ฐ ์ค์ํ ์ญํ ์ ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ด๋ฅผ ์์ ์ ์ฅ์์ ์ ์ฅํ๊ธฐ ์ ์ ์์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- MOC๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ถ์ ํ๋ฉฐ, ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅ์์ ๋ฐ์ํ๊ธฐ ์ํด save() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.
- NSPersistentContainer
- ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์ ์ฅํ๋ ์ฅ์์
๋๋ค. Core Data๋ ๋ค์ํ ์ ํ์ ์์ ์ ์ฅ์๋ฅผ ์ง์ํฉ๋๋ค:
- SQLite: ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์.
- Binary: ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋๋ฆฌ ํํ๋ก ์ ์ฅ.
- In-memory: ๋ฉ๋ชจ๋ฆฌ ๋ด์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ.
- ์ด ์ ์ฅ์๋
NSPersistentStoreCoordinator
์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์ ์ฅํ๋ ์ฅ์์
๋๋ค. Core Data๋ ๋ค์ํ ์ ํ์ ์์ ์ ์ฅ์๋ฅผ ์ง์ํฉ๋๋ค:
Core Data Stack์ ๋์ ํ๋ฆ
- ๋ชจ๋ธ ์์ฑ:
NSManagedObjectModel
์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค. - Persistent Store Coordinator ์ค์ : ์์ ์ ์ฅ์๋ฅผ ์ค์ ํ๊ณ ,
NSPersistentStoreCoordinator
๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. - Managed Object Context ์ค์ :
NSManagedObjectContext
๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๊ณต๊ฐ์ ๋ง๋ญ๋๋ค. - ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฐ ์ ์ฅ:
NSManagedObjectContext
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ๊ณ , ๋ณ๊ฒฝ ์ฌํญ์save()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์ ์ ์ฅ์์ ๋ฐ์ํฉ๋๋ค.