파일 접근 권한 설정
mac의 경우 프로젝트 설정의 Capability에 Sandbox가 설정되어 있으면 File Access Type에 설정된 폴더의 파일만 사용 가능
모든 폴더의 파일을 가져오려면 App Sandbox 항목 제거

iOS의 경우 권한 문제가 발생하는 경우 Info 탭에서 Privacy 추가

타입식별자 설정
프로젝트 Info 탭에서 Imported Type Identifiers 에 항목추가
extensions에 여러 확장자를 지정할 경우 콤마로 구분
Conforms To 에는 부모 타입을 지정 한다.

타입생성
파일패널(대화상자)를 표시하기 위한 퍼블리셔 선언 및 info 에 추가한 타입 식별자로 타입 생성
struct ContentView: View {
@State var isOpenFile = false
let myType = UTType(importedAs: "com.chance.mytype", conformingTo: .data)
var body: some View {
VStack {
}
}
}
파일열기 대화상자
swiftui의 fileImporter를 사용해 파일대화상자를 표시한다.
Button(action: {
isOpenFile = true
}) {
Text("파일열기")
}
.fileImporter(
isPresented: $isOpenFile,
allowedContentTypes: [myType],
onCompletion: { result in
switch result {
case .success(let file):
guard let url = URL(string: file.absoluteString) else {
return
}
// url로 파일 열기
case .failure(let error):
print("\(error.localizedDescription)")
}
}
)
'프로그래밍 > iOS,macOS' 카테고리의 다른 글
| [swift] swift 라이브러리 c 코드에서 연동하기 (0) | 2025.10.18 |
|---|---|
| [swift] 커맨드라인 실행 파일 만들기(swift-argument-parser) (0) | 2025.10.16 |
| SPM Package.swift 관련 요소 목록 (0) | 2025.10.14 |
| [swift] SCNProgram 쉐이더 투명 적용 (0) | 2024.10.31 |
| [swift] SceneKit uv animation (0) | 2024.08.22 |
| [concurrency] Task, TaskGroup, task timeout (0) | 2023.02.28 |
| [swift] sorted array 에 값 추가 (0) | 2022.06.10 |
| [concurrency] swift async/await (0) | 2022.05.13 |
| [Combine] 콜백 기반 여러 처리 결과를 배열로 받기 (0) | 2022.03.20 |
| [SwiftUI] 오디오 레벨 에니메이션, Shape (0) | 2022.01.06 |