관리 메뉴

스윞한 개발자

Saving Data - UserDefault에 대한 정리 본문

Swift 이론

Saving Data - UserDefault에 대한 정리

스윞남 2025. 1. 1. 20:49
728x90
반응형
SMALL

이번 포스팅은 Saving Data - UserDefault에 대해 정리해보려고 합니다!

 

 

 

우선, 앱 개발을 하다 보면 데이터를 저장하고 싶은 부분이 많이 필요할 텐데! 서버 통신 없이 간단한 값들에 대해 저장할 수 있도록 하는 Apple에서 제공해주는 Key - Value 형태의 기본 저장소입니다.

 

로그인 여부나 이메일, 닉네임, 성별 등 아주 간단한 값들에 대해 저장해 줄 수 있습니다.

 

 

애플 공식 문서에서도 설명하듯! 유저의 기본적인 저장소이며, key-value의 쌍으로 저장할 수 있습니다!

 

https://developer.apple.com/documentation/foundation/userdefaults

 

UserDefaults | Apple Developer Documentation

An interface to the user’s defaults database, where you store key-value pairs persistently across launches of your app.

developer.apple.com

 

 

변수, 상수 등을 통해 작성한 코드를 메모리 상에서만 유지됩니다. 예를 들면 show, modal(Full Screen)을 통한 화면 전환에서 뷰컨트롤러가 메모리에서 제거된다면, 작업하던 VC에서의 내용이 사라짐을 의미합니다!

 

하지만, 만약 다운받은 어플을 삭제하게 된다면?

저장되어있던 데이터는 모두 사라지게 됩니다. 따라서 카카오톡의 카톡 내용 백업/복구처럼 기능을 제공하거나, 다른 Saving Data를 사용하여야 합니다.

 

 

사용방법

1. 저장

UserDefaults.standard.set("홍길동", forKey: "userName")
UserDefaults.standard.set(25, forKey: "userAge")
UserDefaults.standard.set(true, forKey: "isLoggedIn")

 

 

이와 같이 set을 사용해 key-value 형태로 String, Int, Bool 등 다양한 형태를 저장해 줄 수 있습니다.

 

2. 불러오기

let userName = UserDefaults.standard.string(forKey: "userName") ?? "기본값"
let userAge = UserDefaults.standard.integer(forKey: "userAge") // 기본값: 0
let isLoggedIn = UserDefaults.standard.bool(forKey: "isLoggedIn") // 기본값: false

 

불러오는 방법은 저장한 value의 형태에 맞게 불러올수 있습니다.

 

3. 삭제

UserDefaults.standard.removeObject(forKey: "userName")

 

삭제는 저장시 설정한 key를 통해 삭제할 수 있습니다!

 

iOS는 기본적으로 앱 마다 별도의 파일을 생성하여 공유되지 않도록 합니다. 외부의 공격으로부터 앱이 손상된 경우, 시스템과 사용자 데이터의 피해를 최소화하기 위해 샌드박스 시스템을 따르고 있습니다.

 

구성은 아래와 같이 나누어져 있으며, 개발자들은 Documents를 가장 많이 다룬다고 생각해 주시면 됩니다! 

 

 

https://developer.apple.com/documentation/security/app-sandbox

 

App Sandbox | Apple Developer Documentation

Restrict access to system resources and user data in macOS apps to contain damage if an app becomes compromised.

developer.apple.com

 

앱을 설치시에 이 각각의 사물함을 지정하고, 앱마다 사용할 수 있는 공간을 내어줍니다. 또한 애플이 보안을 중요하게 생각하다 보니, 할당된 이이 공간이 바뀌기도 합니다. 저장된 공간을 알고 싶다면!

 

NSHomeDirectory를 통해 실제 저장된 위치를 확인 할 수 있습니다. 

 

 

아래와 같이 주소가 나오게 됩니다!

 

그럼 저희가 로컬 저장소로 사용한 UserDefault에 대해서는 Library/Preferences/에 property List 파일로 존재하게 됩니다!

 

이처럼 오늘 정리해본 UserDefalut도 애플의 샌드박스 시스템을 따르고 있습니다. 샌드박스 시스템 덕분에 저장된 UserDefaults의 데이터들은 앱 내에서 안전하게 관리됩니다.

 

UserDefault의 단점으로는 소량의 데이터만 저장이 가능하다는 점, 민감한 정보는 권장하지 않는다는 점이 있습니다. 여러 상황에 맞는 저장소를 채택하는 것이 좋을 듯합니다! 

 

다음 포스팅에서는 다른 저장소와! ViewController의 생명주기에 대한 정리를 포스팅 해보겠습니다!

 

감사합니다!!

 

728x90
반응형
LIST

'Swift 이론' 카테고리의 다른 글

ViewController의 생명주기(+viewIsAppearing) 톺아보기  (2) 2025.01.05
Kingfisher 캐싱 톺아보기  (0) 2025.01.04
앱 Thinning  (0) 2024.12.30
Mac Catalyst 살펴보기  (2) 2024.12.29
Combine 알아보기  (0) 2024.08.05