TIL은 편한 말투로 작성됩니다~
📍 오늘 학습한 내용 정리
1. 스타터 사전 캠프 과제 마무리
2. iOS에서 데이터 저장하는 방법들
1. 스타터 사전 캠프 과제 마무리
오늘로써 사전캠프 3일 차이다. 오늘은 2~6시까지 팀원 분들과 대화도 하고, 아래 이미지에 있는 개념들에 대해 공부하고 과제를 제출했다.
매니저님이 하루에 하나씩 하는걸 목표로 두라고 하셨지만, 독학으로 이미 공부했던 내용들이기에 나에게는 어느 정도 쉬워서 "그냥 오늘 캠프 시간 동안에 끝내자!"라는 생각으로 하다 보니 다 끝낼 수 있었다.
아래에는 제출한 과제들을 정리해두었다.
- 기본 데이터 타입의 이해
- 연산자의 이해
- 조건문 이해하기
- 반복문 이해하기
- 함수의 선언과 사용 방법 이해하기
- 함수의 사용 방법 이해하기
- 프로젝트: "간단한 가위바위보 게임 만들기"
2. iOS에서 데이터 저장하는 방법들
이건 며칠 전에 이미 공부했던 내용이지만, 다시 기억해 보니 조금씩 기억이 안나는 부분도 있고 해서 다시 공부했다.
iOS를 개발하다 보면 데이터를 기기에 저장해야 하는 상황이 자주 생길 것이다. 예를 들자면, 사용자의 설정 값을 유지하거나, 로그인 정보를 저장하는 등 데이터를 관리할 필요가 있다.
그중 대표적으로는 아래의 4가지가 있다.
1. UserDefaults
2. Core Data
3. 파일 저장 (FileManager)
4. Keychain
2-1. UserDefaults
UserDefaults는 사용자의 기본 설정값을 저장할 때 사용되는 키-값(Key-Value) 저장소이다.
Bool, Int, String, Date, Array, Dictionary와 같은 간단한 데이터 타입을 저장할 수 있고, 앱을 재실행해도 값이 유지된다.
- 언제 사용할까?
- 자동 로그인 설정 여부
- 마지막으로 선택한 탭
- 다크모드 적용 여부
- 장점
- 사용법이 간단함
- 빠르게 데이터에 접근이 가능함
- 앱이 삭제되기 전까지 데이터가 유지됨
- 단점
- 민감한 정보(ex: 개인정보, 토큰)는 저장하기에는 부적절함
- 큰 데이터를 저장하면 성능 저하가 발생할 수 있음. (즉, 대량의 데이터 저장에는 부적합)
2-2. Core Data
Core Data는 데이터를 객체(Entity) 단위로 저장하고 관리하는 객체 상태 관리 프레임워크이다.
기본적으로 앱 내부(Local)에 데이터를 저장하는 구조라서, 오프라인에서도 동작이 가능하다.
하지만, 기본 설정만으로는 다른 기기나 사용자와의 데이터 공유가 불가능하다. (Cloud를 통해 확장하면 공유 가능)
- 언제 사용할까?
- 오프라인에서도 데이터가 유지되어야 하는 앱
- 리스트/테이블 형태의 데이터를 자주 다루는 경우
- 장점
- CRUD 작업에 최적화
- 대용량 데이터를 효율적으로 처리 가능
- 단점
- 설명이 복잡하고 코드가 길어짐
- 저장소 크기가 커질 경우 성능 최적화가 필요
- 기본적으로 로컬 저장 전용이기에, iCloud 또는 별도 서버 연동 없이는 기기나 사용자 간 데이터 공유가 불가능함
위에서 말한 "객체 상태 관리 프레임워크(Object Graph and State Management Framework)"란?
: Core Data 같은 프레임워크가 앱이 사용하는 데이터(객체)를 메모리에 올리고, 상태를 추적하며, 관계를 맺고, 저장까지 책임지는 구조.라고 보면 된다.
2-3. 파일 저장 (FileManager)
앱에서 파일 형태로 데이터를 저장할 경우에는 FileManager를 활용해 직접 파일로 저장하는 방식을 사용한다.
JSON, CSV, 이미지, PDF, 텍스트 파일 등 다양한 형식을 저장할 수 있다.
- 언제 사용할까?
- 사용자가 작성한 문서를 저장할 때
- 이미지나 미디어 파일을 캐싱할 때
- 서버에서 받아온 JSON을 로컬에 저장하고 다시 불러올 때
- 장점
- 원하는 포맷으로 데이터를 저장할 수 있음
- 대량의 데이터(ex: 이미지, 오디오 파일) 저장이 가능함
- 단점
- 경로 관리가 필요하고, 직접 파일을 읽고 사용해서 코드가 복잡해질 수 있음
- 파일 존재 여부나 삭제 등을 직접 처리해줘야 함
2-4. Keychain
Keychain은 보안이 필요한 정보(ex: 비밀번호, 토큰, API키 등)를 안전하게 저장하기 위한 저장소이다.
- 언제 사용할까?
- 로그인 토큰
- 사용자 인증 정보
- PIN 코드, 생체 인증 값
- 장점
- iOS에서 자동으로 암호화 관리가 가능함
- Face ID, Touch ID를 활용한 보안 기능을 제공함
- 앱을 삭제해도 Keychain에 저장된 데이터는 iOS 시스템 단에서 별도로 저장되어서 민감 정보 보관에 적합하다.
- 단점
- API가 복잡하고 사용법이 불편하다
- 데이터 접근이 느릴 수 있음
어떤 저장 방식을 사용하는게 좋을지는 "자신의 필요 용도에 맞는 것"을 사용하는게 좋을 것 같다.
- 단순한 설정 값에는 "UserDefaults"
- 구조적인 데이터에는 "Core Data"
- 직접 파일을 유연하게 처리하려면 "FileManager"
- 민감하고 중요한 정보는 "Keychain"
오늘은 여기까지.. 내일은 Todo앱 만들던걸 마무리하는 걸 목표로 해야겠다.
'🖋️ TIL Journal' 카테고리의 다른 글
05.02 (금) iOS 사전 캠프 (0) | 2025.05.02 |
---|---|
05.01 (목) iOS 사전 캠프 (0) | 2025.05.01 |
04.29 (화) iOS 사전 캠프 (1) | 2025.04.29 |
04.28 (월) iOS 사전 캠프 (1) | 2025.04.28 |