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를 사용해 안전하게 키 관리 |
'iOS, Swift 개발' 카테고리의 다른 글
iOS UIAlertController 재사용 함수 만들기 – 버튼 개수별로 정리 (0) | 2025.06.02 |
---|---|
3월 19일 앱 테크 퀴즈 정답(H 포인트 퀴즈, KB 스타 퀴즈, 하나은행 퀴즈, 신한 슈퍼 쏠 퀴즈) (0) | 2025.03.19 |
Swift에서 UITableViewCell을 구현하는 방법 (0) | 2025.03.07 |
앱 스토어 영수증 서명 인증서 SHA-256 이슈 (0) | 2025.01.06 |
구글 애드몹(AdMob) 광고로 수익내기(iOS앱 초기 세팅,예제) (1) | 2024.11.14 |