UIManagedDocument
A managed document object that integrates with Core Data.
Declaration
@MainActor class UIManagedDocumentOverview
UIManagedDocument is a concrete subclass of UIDocument. When you initialize a managed document, you specify the URL for the document location. The document object then creates a Core Data stack to use to access the document’s persistent store using a managed object model from the app’s main bundle. UIManagedDocument performs all the basic setup you need for Core Data, and in some cases you may use instances of the class directly (without a need to subclass). You can supply configuration options for the creation of the coordinator using persistentStoreOptions, and for the model using modelConfiguration. You can also perform additional customization by creating a subclass of UIManagedDocument:
Override persistentStoreName to customize the name of the persistent store file inside the document’s file package.
Override managedObjectModel to customize creation of the managed object model.
You do this if, for example, your app supports multiple document types, each of which uses a different model. You want to ensure that the models aren’t merged for each document class.
Override persistentStoreType(forFileType:) to customize the type of persistent store used by a document.
Override configurePersistentStoreCoordinator(for:ofType:modelConfiguration:storeOptions:) to customize the loading or creation of a persistent store.
Handling errors
To enable your app to observe and handle errors in saving and validating a managed document, you must subclass the UIManagedDocument class and override one or both of the following two inherited methods from the UIDocument class:
Overriding is required because otherwise, the only information your app receives on error is the stateChangedNotification notification, which doesn’t contain a userInfo dictionary and so doesn’t convey specific error information.
Topics
Managing the Core Data stack
configurePersistentStoreCoordinator(for:ofType:modelConfiguration:storeOptions:)managedObjectContextmanagedObjectModelpersistentStoreOptionsmodelConfigurationpersistentStoreType(forFileType:)
Customizing read and write operations
readAdditionalContent(from:)additionalContent(for:)writeAdditionalContent(_:to:originalContentsURL:)