본문 바로가기
iOS, Swift 개발

Swift UserDefaults로 사용자 정보 관리

by Nin J 2025. 5. 30.

iOS 앱에서 UserDefaults를 통해 사용자 정보를 저장하고 불러오는 기능을 알아보려고 한다.

이 코드는 싱글톤 패턴을 사용하여 UserDefaults 접근을 중앙 집중식으로 관리한다.

1. 기본 개념 및 이론

UserDefaults란?

  • iOS에서 사용자 기본 설정(예: 토큰, 아이디, 플래그 등) 및 작은 데이터를 영구 저장할 수 있게 해주는 Key-Value 기반 저장소이다.
  • 앱이 종료되거나 재시작되어도 값이 유지된다.

싱글톤(Singleton) 패턴

  • 해당 클래스는 UserDefaultManager.sharedInstance를 통해 하나의 인스턴스만 사용된다.
  • 전역에서 UserDefaults를 일관성 있게 접근하기 위한 목적이다.

2. 구조 및 방법 정리

class UserDefaultManager {
    static let sharedInstance = UserDefaultManager() // 싱글톤 인스턴스
    fileprivate static let defaults = UserDefaults.standard // 실제 저장소
}

 

- 저장(Save) 메서드 패턴

static func save[키이름](_ value: String) {
    defaults.removeObject(forKey: "key")
    defaults.set(value, forKey: "key")
    defaults.synchronize() // 즉시 저장
}

 

  • removeObject로 먼저 삭제 후 저장하는 이유는 값을 강제로 갱신하기 위함이다.
  • synchronize()는 iOS 12 이상에서는 생략 가능 (자동 저장됨).

- 가져오기(Get) 메서드 패턴

static func getting[키이름]() -> String? {
    let value = defaults.object(forKey: "key") as? String
    return value ?? ""
}

 

  • nil 체크 후 빈 문자열을 반환합니다. ("")
  • 옵셔널 해제를 간단하게 처리함.

3. 저장되는 Key 목록 및 역할

키 이름 저장 목적 메서드

"deviceToken" 푸시 토큰 저장 saveDeviceToken, gettingDeviceToken
"widgetUrl" 위젯 URL saveWidgetUrl, gettingWidgetUrl
"loginToken" 로그인 토큰 saveLoginToken, gettingLoginToken
"loginID" 사용자 ID saveLoginID, gettingLoginID
"loginName" 사용자 이름 saveLoginName, gettingLoginName
"Encstr" 암호화된 인증 정보 saveLoginEncstr, gettingLoginEncstr
"s_flag" 로그인 타입 (예: SNS 로그인 여부 등) saveLogin_S_Flag

 

4. 활용처

  • 자동 로그인 기능
  • 위젯 구성 데이터
  • 푸시 알림 토큰 저장
  • 사용자 인증 세션 유지

5. 사용 예시

UserDefaultManager.saveLoginID("user123")
let id = UserDefaultManager.gettingLoginID()

 

장점 요약

저장/불러오기 메서드가 매번 중복 작성됨 공통 로직은 save와 get으로 추출
키 이름을 직접 문자열로 작성하여 오타 가능성 있음 enum Key를 사용해 안전하게 키 관리