본문 바로가기
감정일기(가칭)

📱 iOS에서 사용자가 선택한 이미지를 FileManager에 저장하는 이유

by 밤새는 탐험가89 2025. 10. 16.
728x90
SMALL

🔹 1️⃣ 문제의 시작: 이미지를 선택했는데, 또 저장해야 한다고?

앱을 개발하다 보면,
사용자가 갤러리에서 이미지를 선택하거나 카메라로 사진을 찍는 기능을 구현할 때가 많습니다.

이때 흔히 드는 의문이 있죠 👇

 

“이미 사용자가 폰 안에 가지고 있는 이미지를 선택했는데,

그걸 FileManager로 또 저장하는 건 중복 저장 아닌가요?”

 

직관적으로는 맞는 말 같지만,
iOS의 파일 접근 구조를 이해하면 답이 완전히 달라집니다.


🔹 2️⃣ 전제: 선택한 이미지는 “앱의 것”이 아니다

사용자가 이미지를 선택하는 경로는 보통 두 가지입니다.

선택 방식 설명 저장 위치
📸 카메라 촬영 사용자가 새로 찍은 사진 임시 디렉토리 (tmp/)
🖼 앨범에서 선택 (PHPicker) 이미 저장된 사진을 선택 Photos 앱(시스템 영역)

 

 즉, 사용자가 선택한 이미지는 

"시스템이 관리하는 영역"에 있고,

“앱이 직접 소유하거나 수정할 수 없는 리소스”입니다.


🔹 3️⃣ 그래서 FileManager에 다시 저장해야 한다

UIImagePickerController나 PHPickerViewController를 통해 가져온 이미지는
앱 안에서 일시적으로 사용할 수 있는 UIImage 객체일 뿐이에요.

 

이건 메모리 상에만 존재하고,
앱을 종료하면 완전히 사라집니다.


Core Data나 Realm 같은 데이터베이스에 그대로 저장할 수도 없습니다.

그래서 이렇게 해야 합니다 👇

 

1. UIImage를 JPEG 또는 PNG 데이터(Data)로 변환

2. FileManager를 통해 앱의 전용 폴더(/Documents/...)에 저장

3. Core Data에는 이미지 파일의 경로(String) 만 저장

 

이 과정을 통해 이미지가 앱의 “소유 데이터”가 되는 거예요.


🔹 4️⃣ 중복 저장처럼 보여도, 사실은 영역이 다르다

겉으로 보기엔 “같은 이미지가 한 번 더 저장된다”고 느껴질 수 있지만,
iOS 입장에서는 완전히 다른 영역이에요.

구분 관리 주체 저장 위치 접근 권한
사용자의 원본 사진 시스템 (Photos) /var/mobile/Media/DCIM/... ❌ 앱 직접 접근 불가
FileManager 복제본 /Documents/EmotionDiaryImages/... ✅ 앱 전용 접근 가능

 

즉,

Photos 앱의 이미지는 “사용자 소유”,

FileManager 이미지는 “앱 소유”입니다.

 

이건 중복이 아니라 “권한이 다른 두 공간에 존재하는 독립 복제본”이에요.

 


✅ 결론

📌 FileManager에 이미지를 다시 저장하는 건 중복이 아니라,

앱이 이미지 데이터를 ‘직접 소유’하기 위한 필수 과정입니다. 

Photos의 이미지는 사용자의 영역이고,
FileManager의 이미지는 앱의 영역입니다.

Core Data에는 이미지를 저장하는 대신,
FileManager에 저장된 경로(String) 만 기록하는 게
가장 효율적이고, 안정적인 설계입니다.

728x90
LIST