NSDocument 子类是否是模型对象?

问题描述 投票:0回答:2

我正在为 macOS Swift 编写一个多文档应用程序。我从 Xcode 提供的文档应用程序模板开始。目前还不清楚它是否是一个对象模型。

NSDocument
是模型还是模型中包含的数据?

swift cocoa model nsdocument
2个回答
1
投票

Apple “文档的数据称为数据模型”:

在 Cocoa 文档架构中,您的文档由

NSDocument
的自定义子类表示。
NSDocument
类提供了管理文档的大部分行为。在您的子类中,您可以通过提供用于读取和写入文档数据的自定义代码来覆盖或微调此行为。文档的数据称为 数据模型。 每个
NSDocument
都有自己的
NSWindowController
,后者又创建一个 NSWindow 对象来显示文档内容。

由于基于文档的应用程序会处理同时打开的多个文档,因此它使用

NSDocumentController
来管理它们。 Cocoa 提供了管理文档的大部分基础设施。通过文件协调、版本管理和其他文档之间的冲突解决,它提供了使用 iCloud 的最简单途径。

这个

NSDocument
子类导入了
Cocoa
并且与UI层代码深深纠缠在一起,所以很难调用一个真正的模型对象(尽管它是一个有用的抽象)。我们中的许多人都努力保持真正的“模型”对象不受 UI/OS 依赖。

简而言之,

NSDocument
管理的数据更适合被视为“模型”。


0
投票

根据苹果公司的说法,不,

NSDocument
不是模型。请参阅 Apple 的“开发基于文档的应用程序”的下图。请注意,NSDocument 和 UI(
contentViewController
NSViewController
)都可以访问模型。

    

© www.soinside.com 2019 - 2024. All rights reserved.