1. 절대적 경로 (Absolute Path)
- 정의: 파일이나 디렉토리의 전체 경로를 지정합니다.
- 특징:
- 경로가 파일 시스템의 루트 디렉토리(macOS/iOS에서는 /)에서 시작.
- 파일의 위치를 고유하게 식별할 수 있습니다.
- 경로의 시작점이 항상 동일하기 때문에, 파일 위치를 정확히 추적 가능.
파일 위치가 /Documents/myfile.jpg라면, 절대 경로는
/Users/username/Library/Developer/CoreSimulator/Devices/<device-id>/data/Containers/Data/Application/<app-id>/Documents/myfile.jpg
iOS에서 파일의 절대 경로:
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("myfile.jpg")
print(fileURL.path)
// 출력 예시: "/Users/username/Library/Developer/CoreSimulator/Devices/<device-id>/data/Containers/Data/Application/<app-id>/Documents/myfile.jpg"
2. 상대적 경로 (Relative Path)
- 정의: 특정 디렉토리를 기준으로 한 파일의 상대적인 위치를 지정합니다.
- 특징:
- 경로는 기준점(예: Documents, feedID 디렉토리)에 따라 달라집니다.
- 앱의 파일 시스템 구조가 변경되더라도 기준점만 유지되면 동일한 방식으로 접근 가능.
예시
- 기준점이 /Documents인 경우:
- 상대적 경로: myfile.jpg
- 절대 경로: /Documents/myfile.jpg
- 기준점이 /Documents/feedID인 경우:
- 상대적 경로: feedID/image_1.jpg
- 절대 경로: /Documents/feedID/image_1.jpg
- 상대 경로로 접근:
let baseDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let relativePath = "feedID/image_1.jpg"
let absolutePath = baseDirectory.appendingPathComponent(relativePath)
print(absolutePath.path)
// 출력 예시: "/Users/username/Library/Developer/CoreSimulator/Devices/<device-id>/data/Containers/Data/Application/<app-id>/Documents/feedID/image_1.jpg"
3. iOS에서 상대적 경로와 절대적 경로의 사용 사례
절대 경로 사용
- 파일의 고유 위치가 필요하고, 경로를 직접 사용하여 접근해야 할 때.
- 예: 파일을 바로 읽거나 쓰는 작업.
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("myfile.jpg")
상대 경로 사용
- Core Data 또는 데이터베이스에 파일의 경로를 저장할 때:
- 앱의 데이터 저장소 경로가 변경되더라도 상대 경로를 통해 경로를 재구성할 수 있습니다.
Core Data에 경로를 저장:
let relativePath = "feedID/image_1.jpg"
feed.imagePath = relativePath
파일에 접근할 때:
let baseDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileURL = baseDirectory.appendingPathComponent(feed.imagePath)
4. 추천 방식
- 상대 경로를 저장:
- 앱에서 Core Data 또는 데이터베이스에 저장할 때, 상대 경로를 저장하세요.
앱의 디렉토리 구조가 변경되더라도, 기준점만 유지하면 문제없이 파일에 접근할 수 있습니다.
- 앱에서 Core Data 또는 데이터베이스에 저장할 때, 상대 경로를 저장하세요.
- 절대 경로로 접근:
- 파일을 읽거나 쓰는 순간에는 상대 경로를 기준으로 절대 경로를 생성하여 사용합니다.
5. 결론
- 상대 경로는 데이터를 저장할 때 유리하며, 경로의 관리가 더 유연합니다.
- 절대 경로는 파일에 실제로 접근하거나 조작할 때 필요합니다.
상대 경로로 저장하고, 절대 경로로 접근하는 방식이 가장 실용적이고 확장성이 높은 방법입니다.
'UIKIT' 카테고리의 다른 글
UICollectionViewCompositionalLayout - 간단 사용 (0) | 2024.12.11 |
---|---|
UIImageView를 customImageView 생성 (2) | 2024.12.04 |
이미지 선택한 갯수 표시 및 최대치 도달시 알림창 띄우기 (0) | 2024.11.25 |
이미지를 선택한 후에 배열에 저장하고 이를 컬렉션뷰로 불러올 때 (0) | 2024.11.23 |
PHPickerViewController, PHPickerConfiguration를 통해 이미지를 선택하는 방법 (0) | 2024.11.23 |