π UserDefaults
class UserDefaults : NSObject
π‘ An interface to the user’s defaults database, where you store key-value pairs persistently across launches of your app.
μ¬μ©μμ defaults λ°μ΄ν°λ² μ΄μ€μ Key-Value ννμ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ°©λ²μ λλ€. Foundation framework μ ν¬ν¨λμ΄ κΈ°λ³ΈμΌλ‘ μ 곡λλ ν΄λμ€λ‘ κ°λ¨νκ² λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€.
defaults λΌκ³ λΆλ₯΄λ μ΄μ λ μΌλ°μ μΌλ‘ μ± μμμ κΈ°λ³Έ μν λλ κΈ°λ³Έ μλ λ°©μμ κ²°μ νλ λ° μ¬μ©λκΈ° λλ¬Έμ΄λΌκ³ ν©λλ€.
βοΈ UserDefaults object κ°μ Έμ€κΈ°
let defaults = UserDefaults.standard
UserDefault μ ν΅ν΄ κ°μ μ μ₯νκ³ λΆλ¬μ€κΈ° μν΄ object λ₯Ό κ°μ ΈμμΌ ν©λλ€. μμ μ½λλ₯Ό ν΅ν΄ object λ₯Ό κ°μ Έμ΅λλ€.
βοΈ UserDefaults λ₯Ό μ΄μ©ν΄ κ° κ°μ Έμ€κΈ°
func object(forKey defaultName: String) -> Any?
UserDefaults λ₯Ό μ΄μ©ν΄ defaults DB μ μ μ₯λ κ°μ κ°μ Έμ€κΈ° μν΄ object method λ₯Ό μ΄μ©ν μ μμ΅λλ€.
νλΌλ―Έν°μ 리ν΄κ°μ λ€μκ³Ό κ°μ΅λλ€.
- defaultName : νμ¬ μ¬μ©μμ defaults DB μ μ μ₯λ key κ°
- return : νΉμ ν key μ μ°κ²°λ object λ₯Ό λ°ννλ€. key κ° μλ κ²½μ° nil μ λ°ννλ€.
μ¬κΈ°μ μ€μν μ μ, 리ν΄λλ object λ immutable νλ€λ κ²μ λλ€. λ³κ²½ν μ μλ κ°μ΄λΌλ μλ―Έμ λλ€!
μλ set ν¨μλ₯Ό ν΅ν΄ mutable object λ₯Ό μ μ₯νλλΌλ, λ°νλλ κ°μ immutable object λΌκ³ ν©λλ€.
μλ μ¬μ§μ method λ₯Ό μ΄μ©ν΄μ κ° type μ λ§λ κ°μ κ°μ Έμ¬ μλ μμ΅λλ€.
βοΈ UserDefaults λ₯Ό μ΄μ©ν΄ κ° μ μ₯νκΈ°
func set(_ value: Any?, forKey defaultName: String)
UserDefaults μ μ΄μ©ν΄ defaults DB μ κ°μ μ μ₯νκΈ°μν΄μ set method λ₯Ό μ΄μ©ν©λλ€.
νλΌλ―Έν°λ λ€μκ³Ό κ°μ΅λλ€.
- value : defaults λ°μ΄ν°λ² μ΄μ€μ μ μ₯ν object
- defaultName : value λ₯Ό μ μ₯νκΈ° μν key
ν΄λΉ ν¨μλ νλΌλ―Έν° value μ κ°μΌλ‘ property list object λ§ κ°λ₯ν©λλ€.
- NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary
Float, Double, Int, Bool, URL type μ λ°μ΄ν°λ set ν¨μλ€μ μ΄μ©ν΄ κ°μ μ€μ ν©λλ€.
- νλΌλ―Έν°μ data type λ§ λ€λ₯΄κ² μ μλμ΄ μμ΄μ, μ¬μ©ν λμλ λκ°μ κ² κ°μ΅λλ€.
βοΈ UserDefaults λ₯Ό μ΄μ©ν΄ μ±μ 첫 μ€ν μ¬λΆ νλ¨νκΈ° [μμ ]
public class Storage {
static func isFirstTime() -> Bool {
let defaults = UserDefaults.standard
if defaults.object(forKey: "isFirstTime") == nil {
defaults.set("No", forKey:"isFirstTime")
return true
} else {
return false
}
}
}
μμ μ½λλ₯Ό ν΅ν΄μ μ±μ΄ μ€μΉλκ³ μ²μ μ€νλμλμ§ μ¬λΆλ₯Ό νλ¨νκΈ° μν ν¨μμ λλ€. UserDefaults λ₯Ό λ€λ₯Έ κ³³μμλ μ¬μ©νκΈ° λλ¬Έμ Storage ν΄λμ€λ₯Ό λ§λ€μ΄ method λ‘ λ§λ€μμ΅λλ€.
Sotrage.isFirsTime() method λ₯Ό νΈμΆν΄μ μ¨λ³΄λ© νμ΄μ§λ₯Ό λμ°κ±°λ, λ©μΈ νμ΄μ§λ‘ μ΄λνκ±°λ ν μ μμ΅λλ€.
Property Wrapper λ₯Ό μ΄μ©ν΄μ UserDefaults λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μλ λ°©λ²μ λν΄ μλ ν¬μ€ν μμ μ 리νμ΅λλ€.
μ¬μ€ μ²μμλ μ¨λ³΄λ© νμ΄μ§, μ°μ»΄ νμ΄μ§, μ΄κΈ° μ€μ νμ΄μ§ λ±μ λν΄μ μ°Ύμ보λ€κ° UserDefaults λ₯Ό μκ² λμμ΅λλ€.λ€μ ν¬μ€ν μμ μ¨λ³΄λ© νμ΄μ§μ μ°κ²°λλ λΆλΆκΉμ§ ν¬μ€ν ν΄λ³΄κ² μ΅λλ€. π₯°
곡μ λ¬Έμ
μ°Έκ³ λ§ν¬
- lemon-dev.tistory.com/entry/NSUserDefaults
- stackoverflow.com/questions/39352907/how-can-i-make-the-uiviewcontroller-visible-only-once-during-first-run-of-the-ap