I am writing a multi-document application for macOS Swift. I'm starting with the Document app template provided by Xcode. It's unclear whether it’s an object model or not. Is NSDocument the model or is the data contained therein the model?
I am writing a multi-document application for macOS Swift. I'm starting with the Document app template provided by Xcode. It's unclear whether it’s an object model or not. Is NSDocument the model or is the data contained therein the model?
Apple says that a “document’s data is called the data model”:
In the Cocoa document architecture, your document is represented by a custom subclass of
NSDocument. TheNSDocumentclass provides most of the behavior for managing your document. In your subclass, you override or fine-tune this behavior by providing custom code for reading and writing document data. A document’s data is called the data model. EachNSDocumenthas its ownNSWindowController, which in turn creates an NSWindow object for displaying the document content.Because a document-based app handles multiple documents that are open at the same time, it uses
NSDocumentControllerto manage them. Cocoa provides most of the infrastructure for managing your documents. With file coordination, version management, and conflict resolution among other documents, it provides the easiest path to using iCloud.
This NSDocument subclass imports Cocoa and is deeply entangled with UI layer code, so one would be hard-pressed to call a true model object (though it is a useful abstraction). Many of us strive to keep true “model” objects free of UI/OS dependencies.
In short, the data managed by the NSDocument is more aptly considered the “model”.