我正在为 macOS Swift 编写一个多文档应用程序。我从 Xcode 提供的文档应用程序模板开始。目前还不清楚它是否是一个对象模型。
NSDocument
是模型还是模型中包含的数据?
Apple 说“文档的数据称为数据模型”:
在 Cocoa 文档架构中,您的文档由
的自定义子类表示。NSDocument
类提供了管理文档的大部分行为。在您的子类中,您可以通过提供用于读取和写入文档数据的自定义代码来覆盖或微调此行为。文档的数据称为 数据模型。 每个NSDocument
都有自己的NSDocument
,后者又创建一个 NSWindow 对象来显示文档内容。NSWindowController
由于基于文档的应用程序会处理同时打开的多个文档,因此它使用
来管理它们。 Cocoa 提供了管理文档的大部分基础设施。通过文件协调、版本管理和其他文档之间的冲突解决,它提供了使用 iCloud 的最简单途径。NSDocumentController
这个
NSDocument
子类导入了Cocoa
并且与UI层代码深深纠缠在一起,所以很难调用一个真正的模型对象(尽管它是一个有用的抽象)。我们中的许多人都努力保持真正的“模型”对象不受 UI/OS 依赖。
简而言之,
NSDocument
管理的数据更适合被视为“模型”。
根据苹果公司的说法,不,
NSDocument
不是模型。请参阅 Apple 的“开发基于文档的应用程序”的下图。请注意,NSDocument
和 UI(contentViewController
、NSViewController
)都可以访问模型。