基于项目的NSDocument工作流程

时间:2011-06-24 02:51:06

标签: objective-c cocoa

使用NSDocument架构时,人们在处理项目/父子关系时发现的最佳技术是什么?

我的目标是让NSDocument管理文件系统上的一组文件(一个非透明的包,类似于Xcode项目目录,而不是项目包)以及设置。文件系统上的文件应该是它们自己的NSDocument,但是能够引用项目NSDocument。理想情况下,此项目NSDocument能够显示(窗口内)已定义类型的“子”NSDocuments。简而言之,我想要Xcode的编辑界面。

我接近这个错误吗?我应该只使用一个NSDocument(项目设置的“文档”和文件系统上的基础纯文件)吗?

1 个答案:

答案 0 :(得分:2)

没有内置的方法来定义文档关系。我建议有一个文档类使用自定义窗口控制器来完成大部分工作。根据选择项目中的哪个文件,您可以使用同一个类来拥有多个文档类型,以确定在打开项目时哪个窗口应处于活动状态。您的NSDocument类将处理不同窗口控制器之间的通信,以及根据需要加载/卸载不同的窗口控制器。项目中的每个不同类型的文件都将获得它自己的自定义NSWindowController类,它将处理文档通常处理的许多任务,例如文件加载/保存,撤消管理等。由于窗口控制器位于文档之前响应者链,您不必担心将大多数这些事件转发到当前窗口控制器。基本上,这是你要求的,但你使用的是窗口控制器而不是子文档。