【问题标题】:What's the accepted way to implement export functionality in a document-based Cocoa app?在基于文档的 Cocoa 应用程序中实现导出功能的公认方法是什么?
【发布时间】:2009-04-21 06:45:34
【问题描述】:

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

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

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

实现默认的保存/另存为...工作流程,但我不想编写我打开的文件。

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

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

【问题讨论】:

    标签: cocoa design-patterns events document


    【解决方案1】:

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

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

    查看Apple's responder chain docs - 图 1.10 涵盖了这条特定路径。

    【讨论】:

    • 啊!我知道我遗漏了一些明显的东西。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多