是否基于文档的应用程序?

时间:2010-11-09 11:19:40

标签: objective-c macos core-data nsdocument

我正在编写一个可用于管理舞蹈学院的桌面应用程序。我的核心数据模型包含学生,教师,班级,发票等实体以及它们之间的各种关系。

我计划的用户界面包含一个垂直拆分视图,左侧有类似iTunes的OutlineView。当您单击该大纲视图中的“学生”项目时,右侧面板的内容将从ManageStudents NIB交换。同样,如果单击大纲视图中的“发票”项,则当前视图将替换为ViewInvoices视图。相当简单,是吗?

我的困境在于是否要以文档为基础?我的所有阅读都表明,如果用户一次打开多个实体实例,那将是一个不错的选择。这不是这种情况 - 在任何时间点都只会打开一个主窗口的实例。

另一方面,我可以从我看到的基于NSDocument的示例中看到很多好处(说实话,我在Web上看到的大多数示例似乎都是基于文档的)。如果我沿着这条路走下去,我很好奇是否要为每个基本实体定义一个文档类型,或者只是一个控制文档。

我们将非常感激地收到任何指导。或者,指向某个地方的指针,提供有关NSDocument何时/不合适的具体建议(来自Apple的“基于文档的应用程序概述”有用地建议“Word处理器和电子表格应用程序是基于文档的应用程序的两个示例” - 我希望对于一些更具洞察力和与其他实际应用相关的东西)

2 个答案:

答案 0 :(得分:2)

考虑一下您的问题域名。什么是“文件”模型?一个舞蹈学院?如果是这样,并且您认为您的用户只管理一个学院,那么基于文档的模型是不必要的。另一方面,如果您认为某个文档代表教师,那么很可能一个学院经理想要与多个教师打交道,因此文档模型似乎是合适的。

关键问题是独立性问题。如果应用程序模型中的所有对象都相关,则无需管理独立文档。另一方面,如果有一个松散的对象集合,每个对象都有自己的相关“子集”,那么这似乎就像是一组文档。这就是文字处理器基于文档的原因:一个文件中的文本,属性和图像与另一个文件中的文本,属性和图像无关,因此将它们视为独立文档是有意义的。

答案 1 :(得分:0)

如果你看到基于NSDocument的好处,那就去吧。我说这个的原因是因为如果有很多文字写作/阅读,那么它应该是一个不错的选择。