λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍎 iOS

[iOS/Swift] UserDefaults λ₯Ό μ΄μš©ν•΄ 데이터 μ €μž₯ν•˜κΈ°, μ•± 졜초 μ‹€ν–‰ μ—¬λΆ€ νŒλ‹¨ν•˜κΈ°

by Danna 2021. 3. 7.
728x90
728x90

πŸ‘€ 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 λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆλŠ” 방법에 λŒ€ν•΄ μ•„λž˜ ν¬μŠ€νŒ…μ—μ„œ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

 

[iOS/Swift] Property Wrapper λ₯Ό ν™œμš©ν•œ UserDefaults μ΄μš©ν•˜κΈ°

μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œ UserDefaults, Onboarding νŽ˜μ΄μ§€μ— λŒ€ν•΄μ„œ μž‘μ„±ν–ˆμ—ˆκ³ , Onboarding νŽ˜μ΄μ§€λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ UserDefaults λ₯Ό μ΄μš©ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€. μŠ€ν„°λ””ν•˜μ‹œλŠ” λΆ„ μ€‘μ—μ„œ Property Wrapper λ₯Ό μ΄μš©ν•˜λ©΄ 효율적으둜..

jellysong.tistory.com


사싀 μ²˜μŒμ—λŠ” μ˜¨λ³΄λ”© νŽ˜μ΄μ§€, μ›°μ»΄ νŽ˜μ΄μ§€, 초기 μ„€μ • νŽ˜μ΄μ§€ 등에 λŒ€ν•΄μ„œ 찾아보닀가 UserDefaults λ₯Ό μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œ μ˜¨λ³΄λ”© νŽ˜μ΄μ§€μ™€ μ—°κ²°λ˜λŠ” λΆ€λΆ„κΉŒμ§€ ν¬μŠ€νŒ…ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. πŸ₯°

 

[iOS/Swift] μ˜¨λ³΄λ”©(Onboarding) νŽ˜μ΄μ§€ λ§Œλ“€κΈ° - Storyboard, UserDefaults, SceneDelegate

πŸ’‘ μ˜¨λ³΄λ”©, Onboarding μ˜¨λ³΄λ”© νŽ˜μ΄μ§€λŠ” μƒˆλ‘œμš΄ μœ μ €λ‚˜ λ‹€μ‹œ λŒμ•„μ˜¨ μœ μ €λ₯Ό ν™˜μ˜ν•΄μ£ΌλŠ” 역할을 ν•œλ‹€. μœ μ €μ—κ²Œ μ–΄ν”Œμ˜ μ‚¬μš©λ²•μ„ μ•Œλ €μ£Όκ±°λ‚˜ κΈ°λŠ₯에 λŒ€ν•œ 팁, μ½˜ν…μΈ  μƒ˜ν”Œ 등을 보여주기 μœ„ν•΄ μ‚¬μš©

jellysong.tistory.com


 

곡식 λ¬Έμ„œ

참고 링크

 

728x90
728x90