CoreData - boostcampwm-2021/iOS04-OwnMyWay GitHub Wiki

CoreData

์™œ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

  • OwnMyWay ์„œ๋น„์Šค๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค์ด๋ฏ€๋กœ CoreData์˜ Persistence๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌํ–‰ํ•œ ์žฅ์†Œ, ์—ฌํ–‰์ค‘ ๋‚จ๊ธด ๊ธ€์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • iOS Persistence๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” UserDefault, SQLite, CoreData, Realm์ด ์กด์žฌํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ €ํฌ๋Š” CoreData๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • Apple ์ž์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์‹ ๋ขฐ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
    • Realm์˜ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ƒ์—์„œ CoreData๋ฅผ ์•ž์„œ์ง€๋งŒ, Third-Party ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ์— ์•ˆ์ •์„ฑ ์ด์Šˆ์™€ ์•ฑ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Realm๊ณผ ๋™์ผํ•˜๊ฒŒ Object ๊ด€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”ํ›„ Realm์œผ๋กœ ์ „ํ™˜์ด ๊ฐ„ํŽธํ•œ ํŽธ์ž…๋‹ˆ๋‹ค.


CoreData

์–ด๋–ป๊ฒŒ ์ ์šฉํ–ˆ๋‚˜์š”?

  • CoreData๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” Repository๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์ด CoreData์— ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น Repository๋ฅผ ์ฃผ์ž…๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. Usecase๋Š” Repository์˜ ์ƒ์„ธ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ protocol์„ ํ†ตํ•œ ์ถ”์ƒํƒ€์ž…์„ ์ฃผ์ž…๋ฐ›์•„ ์ถ”ํ›„์— CoreData๊ฐ€ ์•„๋‹Œ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค ํ•˜๋”๋ผ๋„ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Travel-Landmark&Record ํ˜•ํƒœ๋กœ Relation์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜์˜€๊ณ  Entity๊ฐ„์˜ One-To-Many Relation์„ ์ ์šฉํ•  ๋•Œ Delete Cascade ์˜ต์…˜์„ ์ ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๊ณ  ์‚ญ์ œ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ