๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ 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