Skip to content

Latest commit

ย 

History

History
60 lines (36 loc) ยท 4.19 KB

UserDefaults.md

File metadata and controls

60 lines (36 loc) ยท 4.19 KB

์•ฑ์˜ ์ฝ˜ํ…์ธ ๋‚˜ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ์ €์žฅ/๋ณด๊ด€ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•˜๋Š”๊ฐ€?

์ฐธ๊ณ ํ•œ ์ข‹์€ ๊ธ€

๋‹ต๋ณ€

๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์ฐพ์•„๋ณด๋‹ˆ UserDefaults์™ธ์—๋„ CoreData๋„ ํ•จ๊ป˜ ๋งŽ์ด ๋‚˜์˜ค๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ CoreData์™€๋„ ์กฐ๊ธˆ ๋น„๊ต๋ฅผ ํ†ตํ•ด ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.

CoreData

  • ๋‹จ์ผ ๊ธฐ๊ธฐ์—์„œ data๋ฅผ ์œ ์ง€ ํ˜น์€ ์บ์‹ฑํ•˜๊ฑฐ๋‚˜, CloudKit์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ธฐ๊ธฐ์— data๋ฅผ ๋™๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ
  • ๋„“์€ ์˜๋ฏธ๋กœ๋Š” ์•ฑ์˜ ๋ชจ๋ธ ๊ณ„์ธต์ด๋ฉฐ, ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Framework ์ด๋‹ค.
  • CoreData์˜ ๋ฐ์ดํ„ฐ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ํด๋ž˜์Šค ์ •์˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ณ ๋‚˜๋ฉด CoreData๋Š” ๋Ÿฐํƒ€์ž„์— ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ๋‹ค์Œ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋Šฅ ์ค‘์—๋Š” Persistance ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ ์ด๋ฅผ ํ†ตํ•ด์„œ ์•ฑ์ด ์‚ญ์ œ๋˜๋”๋ผ๋„ ๋‚จ๋Š” ๋ฐ์ดํ„ฐ์˜ ์˜๊ตฌ์ ์ธ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
    • ์ด๋Š” SQLite์—์„œ๋„ ์ œ๊ณต์ด ๋˜๋Š” ๊ธฐ๋Šฅ์ด๋ผ์„œ CoreData๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ Persistance๋Š” CoreData์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜ ์ผ ๋ฟ CoreData == Database๊ฐ€ ์•„๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ CoreData์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ์ด์ œ UserDefaults์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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 ์Œ์œผ๋กœ ๋””๋ฐ”์ด์Šค์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๋•๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์•ฑ ์‹คํ–‰์‹œ ์ดˆ๊ธฐ ์…‹ํŒ…์ด๋‚˜ ๊ธฐ๋ณธ๋™์ž‘์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ๊ฐ’๋“ค์„ ์ €์žฅํ•œ๋‹ค.

์–ด๋””์„œ ์‚ฌ์šฉํ• ๊นŒ?

๋ฌธ์„œ์—์„œ์ฒ˜๋Ÿผ ์•ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ์…‹ํŒ…์— ํ•„์š”ํ•œ ๊ฐ’, ํ˜น์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธ๋„์— ๋งž์ถ”์–ด ์„ค์ •ํ•œ ๊ฐ’๋“ค์ด ๋‹ค์Œ ์•ฑ ์‹คํ–‰์‹œ์—๋„ ์œ ์ง€๊ฐ€ ๋˜์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค(๊ฒ€์ƒ‰ ํ•„ํ„ฐ ์ •๋ณด / ์˜จ๋ณด๋”ฉ์„ ๋ณด์•˜๋Š”์ง€ ๋“ฑ). ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์ด์ง€๋งŒ ์ง€์†์ ์œผ๋กœ ์ฐธ์กฐํ•ด์•ผํ•˜๋Š” ๊ฐ’๋“ค์„ ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

image image

UserDefaults.standard.set(value, forKey: "CustomKey") // ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด key-value ์Œ ์ €์žฅ
UserDefaults.standard.value(forKey: "CustomKey") // ์ €์žฅํ–ˆ๋˜ key๊ฐ’์œผ๋กœ value ์ฐธ์กฐ
// ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ํ‚ค ๊ฐ’ ์ ‘๊ทผ์‹œ nil๊ฐ’ ๋ฐ˜ํ™˜