3

我想在 Cocoa 中构建一个基于文档的应用程序,以便它可以创建和处理不同类型的文档。Word、Excel、Powerpoint 都在一个应用程序中,只是简单得多。但是每个窗口都会根据文档的类型而有所不同。

对于存储,我将使用 CoreData。我想添加一个指定文档类型的字段,因为它们都应该具有相同的文件结尾。

因此,如果不创建几个独立的应用程序,最好的方法是什么?如何在 Interface Builder 中创建它?我该如何编码?

我不需要详细的源代码或任何东西,只需大致了解如何执行此操作,其余的我会弄清楚。

提前致谢!

4

2 回答 2

15

这是 Cocoa 文档系统明确设计的目的。Apple提供了文档,但这里是重点。

  • 每种文档都是NSDocument. 如果您使用的是 Core Data,请NSPersistentDocument改为基于您的课程。(Apple 有一个关于如何在基于文档的应用程序中使用 Core Data的基本教程)
  • 您可以通过Info.plist告诉 Cocoa 您的应用程序可以打开的文档类型,以及要使用的文档类。
  • 每个NSDocument子类都有一个或多个NSWindowController与之关联的对象,每个对象代表一个窗口。如果您只有一个窗口,则不必子类化NSWindowController. 您可以将 UI 逻辑放在文档子类中。但是,对于更简洁的代码,我强烈建议使用 subclassing NSWindowController
  • NSWindowControllerNSDocument如果您决定不子类化NSWindowController)可以从您在 Interface Builder 中构建的 NIB 加载窗口。事实上,这是创建文档窗口的推荐方法。

希望这能让您大致了解如何在 Cocoa 中处理此问题。

于 2010-01-14T16:25:05.163 回答
1

您将从为每种文档类型创建一个 NIB 开始;和NSDocument每个子类(使用现有的基于文档的应用程序示例-NIB 进行设置)。然后,您将设置这些类来处理应用程序属性列表中的各种文档类型;据我所知,在 XCode 的某个地方隐藏了一些有用的工具。

一旦开始运行,大部分细节都应该自动处理;但是您可能仍然需要稍微修改文件菜单,而且我似乎记得设置默认文档类型和诸如此类的东西时遇到了一些麻烦。

总的来说,这并不比为单一类型的文档创建应用程序复杂得多。

PS:请注意确保您确实需要不同的文件类型;有时,对同一个文件有几个不同的视图可能更合适。只是一个想法。:)

于 2010-01-14T15:23:51.580 回答