
iOS 앱은 각자의 고유한 'sandbox' 디렉토리를 가지며, 이는 주로 세 가지 주요 컨테이너로 구분됩니다: Bundle Container, Data Container, iCloud Container. 이들은 각각 다음과 같은 역할을 합니다:

앱과 모든 리소스가 포함됩니다.
이 디렉토리는 읽기 전용이며, 내용은 iTunes나 iCloud에 백업되지 않습니다.
Documents/ 디렉토리:
사용자가 생성한 콘텐츠를 저장합니다.
사용자에게 노출되며, iTunes와 iCloud를 통해 백업됩니다.
Library/ 디렉토리:
사용자에게 노출하지 않는 파일을 저장합니다.
여기에는 Application Support, Caches, Preferences 디렉토리가 포함됩니다.
tmp/ 디렉토리:
임시 파일을 저장합니다.
앱이 실행되지 않을 때 시스템에 의해 자동으로 삭제됩니다.
iCloud와 동기화되는 데이터를 저장합니다.
iOS 파일 시스템에 접근하고 관리하는 주요 클래스는 FileManager입니다. 이 클래스를 사용하여 파일 시스템의 내용을 탐색하고, 파일을 읽고, 쓰고, 삭제할 수 있습니다.
예시: 파일 경로 접근
// 파일 매니저 인스턴스 생성
let fileManager = FileManager.default
// 사용자 문서 경로
let documentPath: URL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
| 데이터 유형 | 저장 위치 | 이유 |
|---|---|---|
| 동영상 플레이어의 동영상 파일 | Documents/ | 사용자가 생성한 콘텐츠로, 용량이 큰 경우 백업을 제한할 수 있음. |
| 웹 서버에서 받아온 임시 데이터 | Library/Caches/ | 임시 데이터이며, 재사용 가능성이 높음. 디스크 용량 부족 시 시스템에 의해 삭제될 수 있음. |
| 사용자가 작성한 임시 메모 | Documents/ | 기본 메모 앱에서 한 글자라도 작성 시 바로 저장되는 것을 참고. 사용자에게 중요한 데이터로 간주됨. |
| 메모장 앱의 메모 정보 | Library/Application Support/ | 지속적으로 관리되며, 사용자에 의해 삭제되지 않아야 하고, 백업이 가능해야 함. |
| 내 일기를 외부로 내보내기 위한 백업 파일 | tmp/ | 공유 후 즉시 삭제될 수 있으며, 임시적인 성격의 데이터에 적합. |
| 채팅 앱의 대화 내역 | Library/Application Support/ | 지속적으로 관리되어야 하며, 사용자의 접근이 제한되고 백업이 필요함. |
| 어젯밤 술취해 남겨둔 음성 메모 | Documents/ | 사용자에게 중요하며 백업이 가능해야 하는 데이터. |
| 사진 편집을 위해 사진첩에서 가져온 사진 | Documents/Inbox/ | 외부에서 정보를 받아오는 경우 사용. |
위 데이터 저장 위치는 예시 입니다, 자세한 저장 위치를 알고싶은 분은 아래 사이트 참고 바랍니다. 😆