[iOS] Persistance 데이터를 영구적으로 저장하는 방법

RudinP·2024년 8월 3일
0

Study

목록 보기
258/258

Persistance

  • 데이터를 물리적인 저장장치에 저장에서 앱을 종료해도 데이터가 사라지지 않게 하는 것
  • 데이터를 파일로 저장하는 것

데이터를 영구적으로 저장하는 방법들

데이터의 크기와 특성에 맞게 적절한 방식 채택

  • 크기가 작고 단순한 데이터: User Defaults, Property List
    • 숫자나 짧은 문자열, 날짜와 같은 데이터를 빠르게 저장, 읽기
    • 데이터를 검색하는 기능이 없다는 단점
  • 사용자의 계정, 건강, 결제 정보: Keychain 혹은 암호화해서 저장
    • 암호화되어있으며, 다른 앱에서 접근하지 못하도록 막아줌
    • 다른 방식으로 저장하면 작동은 하지만 보안상 접근 가능하여 문제가 발생함
  • 메모, 즐겨찾기, 할 일: Core Data, Swift Data

보통 Binary데이터를 직접 저장하는 경우는 거의 없다.

Sandbox

iOS에서 파일에 접근하는 방법은 상당히 제한적이다.
보안적 측면, 데이터 무결성을 위해 Sandbox메커니즘을 사용한다.
앱을 설치하면 Sandbox 디렉토리가 생성되고, 앱과 관련된 모든 파일은 여기 저장된다.
앱에서 접근 가능한 범위도 Sandbox 내부로 제한된다.
따라서 다른 앱에 저장된 데이터에 접근하는 것은 불가능하다.

주요한 Container

  • Sandbox 내부에는 3개의 컨테이너가 존재한다.

1. Bundle Container

  • 앱 실행 파일이 저장
  • 이미지, 사운드 파일 등 리소스 저장
  • 읽기 전용
  • 시스템이 관리하는 부분

2. Data Container

  • 중요
  • 앱에서 데이터 저장 시 반드시 이 컨테이너에 저장됨
  • 애플이 제공하는 가이드라인에 따라 적절한 위치에 저장해야 함
  • 그렇지 않더라도 작동은 되긴 함. 그러나 위치에 따라 iCloud 백업 여부가 결정됨. 불필요한 파일들은 반드시 백업에서 제외해야 한다.

Data Container 구조

  • Documents : 사용자가 직접 생성한 데이터 저장. iCloud 백업 가능.
  • Library : 사용자가 생성하지 않고 앱실행에 필요해 영구적으로 저장하는 데이터. iCloud 백업 가능.
    • Caches : 캐시로 사용하는 데이터는 여기 저장. 공간이 부족해지면 iOS가 삭제. 따라서 파일을 읽기 전에 확인 후 처리해야 함
    • Application Support : 설정 파일. iCloud 백업 가능.
  • tmp : 임시 파일 데이터. 특정 시점에 iOS가 삭제하지만 사용 후 바로 삭제하는 것이 좋음.

3. iCloud Container

  • iCloud로 동기화되는 데이터가 저장됨
  • 시스템이 관리하는 부분

Container 구조 확인

print(NSHomeDirectory()) //설치된 앱의 경로 확인 가능
  • SystemData: 시스템이 사용하는 디렉토리. 무시해도 됨.

  • Preferences: 시스템이 사용. User Defaults가 여기 저장됨
  • Application Support는 기본적으로 만들어지지 않으므로 만들어서 사용해야 함.
profile
iOS 개발자가 되기 위한 스터디룸...

0개의 댓글