3

我有一个简单的基于文档的 Cocoa 应用程序,它充当 .wav 文件的查看器,以进行一些频率分析。我希望能够将从打开的文件中收集的数据导出到 CSV,以便在其他程序中进行进一步分析。

Cocoa 中基于文档的应用程序框架允许您覆盖

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError

实现默认的 Save/Save As... 工作流程,但我不想写我打开的文件。

显而易见的事情是在我的文档中实现导出工作流,显示文件保存表,构建一些 NSData,并将其写入文件路径,但是没有明显的方法可以将 MainMenu nib 中的插座连接到对文档控制器的操作。

那么,在基于文档的 Cocoa 应用程序中实现此类功能的公认方法是什么?

4

1 回答 1

3

您可以在 MainMenu.nib 的“First Responder”对象中创建一个名为“export:”的新操作并连接到它。然后,在您的文档子类中实现一个 export: 方法。这将调用您的方法。

这样做的原因是发送到神奇的第一响应者对象的消息通过整个响应者链,寻找一些处理它们的对象。该响应者链中的一项是文档,因此当当前选择的控件、视图、超级视图、窗口等都没有处理消息时,文档就有机会。(文档控制器也在那个链上,所以你也可以使用它。)

看看Apple 的响应者链文档——图 1.10 涵盖了这个特定的路径。

于 2009-04-20T22:43:18.660 回答