如何将“普通”NSDocument逻辑添加到修改后的基于项目的体系结构?

时间:2011-11-26 22:11:48

标签: objective-c macos cocoa nsdocument

我打算创建一个基于项目的Mac应用程序。它有自己的项目文件格式,目前能够读取和处理它。这已经成为整个故事的问题:我打开项目文件,而不是每个/单独打开文件。

这意味着NSDocument架构认为用户正在编辑项目文件。他/她不是。目前我的应用程序通过手动打开每个项目文件来接管阅读部分,但很难为项目中的文件实现其他任何东西,如自动保存或版本,因为它们只是引用项目文件。

所以我的问题是:如何在这种项目架构中使用NSDocument,因此它实际上知道我只编辑项目的一部分或完全不同的文件?或者我应该采用不同的方法吗?

目前,“保存”和“还原为已保存”选项已禁用。 为什么会发生这种情况?通常应该为项目文件启用选项。

1 个答案:

答案 0 :(得分:4)

您似乎假设基于文档的应用只能处理一种类型的文档。情况并非如此,文档架构可以处理任意数量的文档。

只需创建两个不同的NSDocument子类,一个用于项目文件,另一个用于实际文档。您需要编辑Info.plist以添加新文档类型并将其与自己的文件扩展名/ UTI相关联。

这样做可以使两种类型的文档(项目文件和文档文件)都非常简单,从而获得文档体系结构的好处。

如果您通过将文档加载到父项目窗口(例如Xcode)来处理文档,那么事情会变得复杂一些。如果是这种情况,那么您需要编写自定义NSDocumentControllerNSWindowController子类。