Skip to content

Latest commit

ย 

History

History
122 lines (81 loc) ยท 4.94 KB

File metadata and controls

122 lines (81 loc) ยท 4.94 KB

UserDefaults

An interface to the userโ€™s defaults database, where you store key-value pairs persistently across launches of your app.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” DB๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค. key-value ์Œ์œผ๋กœ ์œ ์ง€๋จ.


Declaration

class UserDefaults : NSObject

์•ฑ์—์„œ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„ ์ด์šฉ, CoreData, UserDefaults ๋“ฑ์ด ์žˆ๋‹ค.

์ด ์ค‘ UserDefaults๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋ฉด์„œ, ์•ฑ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ธฐ๋ณธ ์ €์žฅ์†Œ (default database)์— ์ ‘๊ทผํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๊ฐ€์ ธ์˜ค๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

UserDefaults๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์•ฑ ์ „์ฒด์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์กด์žฌํ•œ๋‹ค. ์ฆ‰, ์•ฑ ์ „์ฒด๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค. UserDefaults ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ๊ฐ์˜ ํ˜ธ์ถœ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ UserDefaults ๊ฐ์ฒด๊ฐ€ ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

UserDefaults๋Š” float, double, integer, boolean ๊ณผ ๊ฐ™์€ ๊ณตํ†ต ์œ ํ˜•์— ์•ก์„ธ์Šคํ•˜๊ธฐ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•  ๋ฟ๋งŒ์•„๋‹ˆ๋ผ NSData, NSString, NSNumber, NSDate, NSArray ๋˜๋Š” NSDictionary ์œ ํ˜•์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๊ณ ์‹ถ์„ ๋•Œ๋Š” NSKeyedArchiver(NSKeyedUnarchiver), codable์„ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๊ฐ„๋‹จ์ •๋ฆฌ๐Ÿ’ก

  • ์•ฑ์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • key - value ์Œ์œผ๋กœ ์ €์žฅ
  • Singleton ๊ฐ์ฒด, ์•ฑ ์ „์ฒด์—์„œ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋กœ ์‚ฌ์šฉ
  • float, double, NSData, NSString ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ €์žฅ, ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์‚ฌ์šฉํ•˜๊ธฐ

UserDefaults ํด๋ž˜์Šค๋Š” Foundation ํ”„๋ ˆ์ž„์›Œํฌ ์•ˆ์— ๋‚ด์žฅ๋œ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € Foundation์„ ๊ฐ€์ ธ์˜จ๋‹ค.

UserDefaults.standard

๊ณต์œ ๋œ ๊ธฐ๋ณธ๊ฐ’ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ํ˜„์žฌ ์ž…๋ ฅ๋œ ๊ฐ’์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— NSUserDefaults ๊ฐ’๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.

import Foundation
print(UserDefaults.standard)

// <NSUserDefaults: 0x121e13450>

set(Any?, forKey: String)

set ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด UserDefaults ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ฑ๋ก์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ํ˜•์‹์ด Dictionary ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ž์ชฝ์— value๊ฐ’์„ ๋„ฃ๊ณ  forKey์—๋Š” key๊ฐ’์„ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๊ฐ’์˜ ํ˜•์‹์— ๋”ฐ๋ผ object, url, array, dictionary, string, stringArray, data, bool, integer, float, double ๋“ฑ์„ ํ˜ธ์ถœํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’์˜ ํ‚ค๋ฅผ forKey ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ž…๋ ฅ์„ ํ•˜๋ฉด ๋œ๋‹ค.

value๊ฐ’์ด String์ธ ๊ฒฝ์šฐ ๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฐ’๋“ค์„ ์‚ฌ์šฉํ• ๋ ค๋ฉด ??๋‚˜ guard ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—†์„ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๊ธฐ์กด์˜ ์‚ฌ์šฉํ•˜๋˜ key์˜ value๊ฐ’์„ ๋ฐ”๊ฟ€ ๋•Œ๋„ set์„ ํ†ตํ•ด ๋˜‘๊ฐ™์€ key๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

import Foundation
print(UserDefaults.standard)
UserDefaults.standard.set("Daesiker", forKey: "name")
UserDefaults.standard.set(27, forKey: "age")
UserDefaults.standard.set(4.1, forKey: "grade")
print(UserDefaults.standard.string(forKey: "name") ?? "no name")
print(UserDefaults.standard.integer(forKey: "age"))
print(UserDefaults.standard.double(forKey: "grade"))

//<NSUserDefaults: 0x126613450>
//Daesiker
//27
//4.1

removeObject(forKey: String)

ํ•ด๋‹น ํ‚ค์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์‚ญ์ œํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ Bool, Int, Float, Double ํƒ€์ž…์˜ value๋“ค์€ ํ•ด๋‹น ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. Bool์€ false๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด๊ณ  Int, Float, Double์€ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

import Foundation
print(UserDefaults.standard)
UserDefaults.standard.set("Daesiker", forKey: "name")
UserDefaults.standard.set(27, forKey: "age")
UserDefaults.standard.set(4.1, forKey: "grade")
print(UserDefaults.standard.string(forKey: "name") ?? "no name")
print(UserDefaults.standard.integer(forKey: "age"))
print(UserDefaults.standard.double(forKey: "grade"))

UserDefaults.standard.removeObject(forKey: "age")

print(UserDefaults.standard.string(forKey: "name") ?? "no name")
print(UserDefaults.standard.integer(forKey: "age"))
print(UserDefaults.standard.double(forKey: "grade"))
/*

<NSUserDefaults: 0x126613450>
Daesiker
27
4.1
Daesiker
0
4.1
*/


์ฐธ๊ณ ์ž๋ฃŒ

UserDefaults | Apple Developer Documentation

[iOS] UserDefaults ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

[iOS] UserDefaults ์‚ฌ์šฉํ•˜๊ธฐ

[ios] userDefaults๋ฅผ ์ด์šฉํ•œstructure ํƒ€์ž… Data ์ €์žฅํ•˜๊ธฐ

iOS ) ์™•์ดˆ๋ณด๋ฅผ ์œ„ํ•œ User Defaults์‚ฌ์šฉํ•ด๋ณด๊ธฐ(switch)