์ฑ์ ์ฝํ ์ธ ๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ ์ฅ/๋ณด๊ดํ๋ ํน๋ณํ ๊ฐ์ฒด๋ฅผ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ?
๊ณต๋ถ๋ฅผ ์ํด ์ฐพ์๋ณด๋ UserDefaults์ธ์๋ CoreData๋ ํจ๊ป ๋ง์ด ๋์ค๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ CoreData์๋ ์กฐ๊ธ ๋น๊ต๋ฅผ ํตํด ์ฐจ์ด์ ์ ์์๋ณด๊ณ ์ ํ๋ค.
- ๋จ์ผ ๊ธฐ๊ธฐ์์ data๋ฅผ ์ ์ง ํน์ ์บ์ฑํ๊ฑฐ๋, CloudKit์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ธฐ๊ธฐ์ data๋ฅผ ๋๊ธฐํ ํ๋ ๊ฒ
- ๋์ ์๋ฏธ๋ก๋ ์ฑ์ ๋ชจ๋ธ ๊ณ์ธต์ด๋ฉฐ, ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ๊ด๋ฆฌํ๋ Framework ์ด๋ค.
- CoreData์ ๋ฐ์ดํฐ๋ชจ๋ธ ํธ์ง๊ธฐ๋ฅผ ํตํด์ ์ฌ์ฉ์๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ด๊ณ๋ฅผ ์ ์ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ํด๋์ค ์ ์๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฌ๊ณ ๋๋ฉด CoreData๋ ๋ฐํ์์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ์ฌ ๋ค์์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค.
- ๊ธฐ๋ฅ ์ค์๋ Persistance ๊ธฐ๋ฅ์ด ์๋๋ฐ ์ด๋ฅผ ํตํด์ ์ฑ์ด ์ญ์ ๋๋๋ผ๋ ๋จ๋ ๋ฐ์ดํฐ์ ์๊ตฌ์ ์ธ ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค
- ์ด๋ SQLite์์๋ ์ ๊ณต์ด ๋๋ ๊ธฐ๋ฅ์ด๋ผ์ CoreData๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์๊ฐํ ์๋ ์๋ค.
- ํ์ง๋ง Persistance๋ CoreData์ ๊ธฐ๋ฅ ์ค ํ๋ ์ผ ๋ฟ CoreData == Database๊ฐ ์๋๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ CoreData์ ๋ํ ๊ฐ๋จํ ์ค๋ช ์ ๋๋ค. ์ด์ UserDefaults์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
class UserDefaults: NSObject
@interface NSUserDefaults : NSObject
- NSUserDefaults(UserDefaults)๋ Class์ด๋ค.
- ์ฌ์ฉ์์ defaults database์ key-value ์์ผ๋ก ๋ฐ์ดํฐ์ ์ ์ฅ์ ๋๋ ์ธํฐํ์ด์ค์ด๋ค.
- ์ฑ์ด ๊บผ์ ธ๋ ์ง์๋์ง๋ง, ์ฑ ์ญ์ ์์๋ CoreData์ ๋ค๋ฅด๊ฒ ํจ๊ป ์ฌ๋ผ์ง๋ ๋ฐ์ดํฐ์ด๋ค.
- NSUserDefaults ํด๋์ค๋ default system๊ณผ ์ํธ์์ฉํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. default system์ ์ฌ์ฉ์์ ์ ํธ๋์ ๋ง์ถ์ด ์ฑ์ด ์์ ์ ํ๋์ ์ฌ์ฉ์ํํ ์ ์๋๋กํ๋ค. ์๋ฅผ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ ํธํ๋ ์ธก์ ๋จ์ ๋๋ ๋ฏธ๋์ด ์๋๋ฅผ ๋ช ์ํ๋๋ก ํ ์ ์๋ค. ์ฑ๋ค์ ์ด๋ฌํ ๊ธฐ๋ณธ ๊ฐ๋ค์ ์ฌ์ฉ์์ default database์ ์๋ ํ๋ผ๋ฏธํฐ๋ค์ ์งํฉ์ ํ ๋นํ์ฌ ์ ์ฅํ๋ค. ํ๋ผ๋ฏธํฐ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ฑ ์์์์ ๊ธฐ๋ณธ ์ํ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ํ๋ ๋ฐฉ์์ ๊ฒฐ์ ๋๋๋ฐ์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ default๋ผ๊ณ ํ๋ค.
- ๋ฐํ์์ ์ฌ์ฉ์์ default database์์ ๊ฐ์ ์ฝ๊ธฐ ์ํด NSUserDefaults ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ, ๋งค๋ฒ default database์ ์ ๊ทผํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ฏ๋ก NSUserDefaults๋ ๋ฐ์ดํฐ๋ค์ ์บ์ฑํด๋๋๋ค.
์ข ํฉ์ ์ผ๋ก NSUserDefaults๋ Class์ด๋ฉฐ, Key-Value ์์ผ๋ก ๋๋ฐ์ด์ค์ ๋ฐ์ดํฐ ์ ์ฅํ๋ ๊ฒ์ ๋๋ ์ธํฐํ์ด์ค์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฑ ์คํ์ ์ด๊ธฐ ์ ํ ์ด๋ ๊ธฐ๋ณธ๋์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ๊ฐ๋ค์ ์ ์ฅํ๋ค.
๋ฌธ์์์์ฒ๋ผ ์ฑ์ ๊ธฐ๋ณธ์ ์ธ ์ ํ ์ ํ์ํ ๊ฐ, ํน์ ์ฌ์ฉ์๊ฐ ์ ํธ๋์ ๋ง์ถ์ด ์ค์ ํ ๊ฐ๋ค์ด ๋ค์ ์ฑ ์คํ์์๋ ์ ์ง๊ฐ ๋์ด์ผ ํ ๋ ์ฌ์ฉํ ์ ์๋ค(๊ฒ์ ํํฐ ์ ๋ณด / ์จ๋ณด๋ฉ์ ๋ณด์๋์ง ๋ฑ). ์๋ฒ์ ์ฌ๋ฆฌ์ง ์๋ ๋ฐ์ดํฐ์ด์ง๋ง ์ง์์ ์ผ๋ก ์ฐธ์กฐํด์ผํ๋ ๊ฐ๋ค์ ์ ์ฅํ๋ค๊ณ ์๊ฐํด๋ ๋ ๊ฒ ๊ฐ๋ค.
UserDefaults.standard.set(value, forKey: "CustomKey") // ์ธํฐํ์ด์ค๋ฅผ ํตํด key-value ์ ์ ์ฅ
UserDefaults.standard.value(forKey: "CustomKey") // ์ ์ฅํ๋ key๊ฐ์ผ๋ก value ์ฐธ์กฐ
// ์ฌ๋ฐ๋ฅด์ง ์์ ํค ๊ฐ ์ ๊ทผ์ nil๊ฐ ๋ฐํ