An interface to the userโs defaults database, where you store key-value pairs persistently across launches of your app.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ DB๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ธํฐํ์ด์ค. key-value ์์ผ๋ก ์ ์ง๋จ.
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์ ๊ฐ์ ธ์จ๋ค.
๊ณต์ ๋ ๊ธฐ๋ณธ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค. ํ์ฌ ์ ๋ ฅ๋ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ NSUserDefaults ๊ฐ๋ง ์ถ๋ ฅ๋๋ค.
import Foundation
print(UserDefaults.standard)
// <NSUserDefaults: 0x121e13450>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ํด๋น ํค์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ฉด ์ญ์ ํด์ฃผ๋ ๋ฉ์๋์ด๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ 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)