프로젝트/Universal textEditor 5

04. 동작 검증, 더 나아가기

동작 macOS 문제없이 파일을 저장하고, 최근 사용한 파일의 목록을 불러올 수 있으며, 편집도 제대로 동작한다. iOS iOS도 마찬가지로 잘 동작한다. 더 나아가기 iOS와 macOS에서 모두 잘 동작하지만, 미관상 거슬리는 부분이 하나 있다. 바로 이 부분이다. 심지어 오른쪽 뒤로가기 버튼은 아무런 동작도 하지 않기까지 하는데, 이는 DocumentGroup과 TextEditor의 기본 UI가 겹쳐서 발생하는 문제다. struct ToyEditorApp: App { var body: some Scene { DocumentGroup(newDocument: TextFile()) { file in ContentView(document: file.$document) .toolbarRole(.automati..

03. 프로젝트 설정 변경

앱이 iOS와 맥의 저장소에 접근하기 위해 몇 가지 설정을 변경해 줘야 한다. Project > Target 프로젝트의 Target으로 이동해 'App Sandbox' 부분의 User Selected File의 권한을 'Read/Write'로 변경한다. 이 과정으로 맥에서 Finder를 사용해 기존의 파일을 읽거나 수정할 수 있고, 새 파일을 생성할 수 있다. 특히 해당 권한은 이전 Xcode 버전에서 maxOS.entitlements 파일의 'com.apple.security.files.User-selected.read-write'를 대체하는 부분이다. Project > info 프로젝트의 Target으로 이동해 info에 새로운 Key를 추가한다. 추가하는 'Support Document Browse..

02. 구현

FileDocument Apple Developer Documentation developer.apple.com 파일을 불러올 구조체를 정의한다. struct TextFile: FileDocument { static var readableContentTypes: [UTType] init(configuration: ReadConfiguration) throws { } func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { } } 구조체의 프로토콜은 FileDocument로 필수로 구현해야 하는 메서드와 생성자는 다음과 같다 init(configuration: Self.ReadConfiguration) throws 열기에 해당한..

01. 배경지식

UniformTypeIdentifiers 예제는 해당 모듈을 import 하는 걸로 시작한다. utf-8이나 utf-16으로 인코딩 된 파일을 읽기 위해 사용한다고 하는데 조금 자세히 알아보자. Apple Developer Documentation developer.apple.com The Uniform Type Identifiers framework provides a collection of common types that map to MIME and file types. Use these types in your project to describe the file types in your app. 해석하면 MIME과 파일 타입에 대한 형식을 제공한다는 의미이다. 아직도 모르겠으니 조금 더 찾아보자...

00. 시작하며

개인적으로 필요한 앱을 만들어 보기 위해 Finder를 호출할 일이 생겼는데, 간단한 예제 프로그램 만들기가 있어 따라하며 정리해 본다. 앱 UI 별도의 UI를 구성하진 않는다. 특이점이라면 항상 사용하던 WindowGroup이 아닌 DocumentGroup을 사용해 본다. 애플에서 제공하는 Finder와 File 앱의 API를 그대로 사용한다. 기능 FileBrowser(Finder, Files App) 호출 plaintext 파일에 대한 CRUD 참고 굉장히 간단한 샘플 코스가 있다. 내용은 간단하지만 설명이 많이 빠져있어 이를 채우며 진행할 예정이다.