Swift

Swift - UserDefaults

iosos 2023. 8. 16. 17:43

UserDefaults

- iOS 및 macOS 애플리케이션에서 설정과 같은 간단한 데이터를 영구적으로 저장하고 관리하기 위한 인터페이스를 제공하는 클래스

- 싱글톤 패턴으로 설계되어 앱 전체에서 단 하나의 인스턴스만 존재

- 사용자 환경 설정, 마지막 사용 데이터, 기본 설정 값 등을 쉽게 저장하고 검색할 수 있음 

- 키-값 형태로 작동하며, 사용자가 설정을 변경하거나 앱 내에서 사용하는 데이터를 저장하는 데 주로 사용 

- 앱이 종료되거나 다시 시작되더라도 설정과 데이터가 유지되는 이점 제공 

- 작은 데이터에 적합하며 대량의 데이터를 저장하는 데는 적합하지 않음 

 

 


예제)

import UIKit

// 데이터 저장 (데이터 - 키)
UserDefaults.standard.set("홍길동", forKey: "userName")
UserDefaults.standard.set(25, forKey: "userAge")
UserDefaults.standard.set(true, forKey: "isStudent")

// 데이터 검색
let userName = UserDefaults.standard.string(forKey: "userName")
let userAge = UserDefaults.standard.integer(forKey: "userAge")
let isStudent = UserDefaults.standard.bool(forKey: "isStudent")

print("userName : \(userName), userAge : \(userAge), isStudent : \(isStudent)")
// 출력 : userName : Optional("홍길동"), userAge : 25, isStudent : true

 

// 딕셔너리 형태로 UserDefaults에 저장
let defaultValues : [String : Any] = [
    "userName" : "Guest",
    "age" : 20,
    "isTrue" : false
]

// 데이터 저장
UserDefaults.standard.set(defaultValues, forKey: "defaultValue")

// 데이터 검색
let value = UserDefaults.standard.dictionary(forKey: "defaultValue")

// 옵셔널 바인딩
if let name = value?["userName"] as? String {
    print("\(name)")    // 출력 : Guest
}

if let age = value?["age"] as? Int {
    print("\(age)")      // 출력 : 20
}

if let isTrue = value?["isTrue"] as? Bool {
    print("\(isTrue)")   // 출력 : false
}

 

 

참고)

https://velog.io/@nnnyeong/iOS-UserDefaults-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

https://zeddios.tistory.com/107