UIManagedDocument

Panther·2021년 7월 27일
0

https://developer.apple.com/documentation/uikit/uimanageddocument

"A managed document object that integrates with Core Data."

코어 데이터와 통합되는 문서 객체입니다.

Declaration

@MainActor class UIManagedDocument : UIDocument

Overview

UIManagedDocumentUIDocument의 구체화된 서브클래스입니다. 관리된 문서(managed document)를 초기화할 때, 문서 위치를 위한 URL을 구체화해야 합니다. 그러면 문서 객체는 앱의 메인 번들로부터 관리된 객체 모델을 사용해서 문서의 영구 저장소에 접근하기 위해 사용할 코어 데이터 스택을 생성합니다. UIManagedDocument는 코어 데이터에 필요한 모든 기본적인 설정을 수행합니다. 그리고 어떤 경우에서는 클래스의 인스턴스를 직접 사용(서브클래스 없이)하게 될 것입니다. modelConfiguration을 사용해 조정자의 생성을 위한 설정 옵션을 제공할 수도 있고, modelConfiguration을 사용해 모델을 위한 설정 옵션을 제공할 수도 있습니다. UIManagedDocument의 서브클래스를 생성함으로써 추가적인 커스텀도 수행할 수 있습니다.

  • 문서의 파일 패키지 내부에 영구 저장소 파일의 이름을 커스터마이징하기 위해 persistentStoreName을 오버라이드할 수 있습니다.
  • 관리된 객체 모델 생성을 커스터마이징하기 위해 managedObjectModel을 오버라이드할 수 있습니다.
    만약 이렇게 할 경우 앱은 각각이 다른 모델을 사용하는 여러 문서 타입을 지원할 수 있습니다. 각각의 문서 클래스에 대해 모델이 병합되지 않도록 할 수 있습니다.
  • 문서에 의해 사용되는 영구 저장소의 타입을 커스터마이징하기 위해 persistentStoreType(forFileType:)을 오버라이드할 수 있습니다.
  • 영구 저장소의 로딩 혹은 생성을 커스터마이징하기 위해 configurePersistentStoreCoordinator(for:ofType:modelConfiguration:storeOptions:)를 오버라이드할 수 있습니다.

Handling Errors

관리된 문서를 저장하고 유효성 검증을 하는 것에 있어 에러를 감지하고 처리할 수 있도록 하려면, UIManagedDocument 클래스를 서브클래싱해야 하고, UIDocument 클래스로부터 상속된 아래 두 가지 메소드 중 하나 혹은 모두를 오버라이드해야 합니다.

  • handleError(_:userInteractionPermitted:)
  • finishedHandlingError(_:recovered:)

오버라이드하는 것은 필요합니다. 그렇게 하지 않는 경우 에러에 대해 받는 정보는 오직 stateChangedNotification 노티피케이션일 것입니다. 이는 userInfo 딕셔너리를 포함하지 않으며, 특정 에러 정보를 전달해주지 못합니다.

0개의 댓글