【问题标题】:Check whether save successfully happened in Cocoa Document Based application检查是否在 Cocoa Document Based 应用程序中成功保存
【发布时间】:2011-04-28 20:17:39
【问题描述】:

我有一个基于 Cocoa 文档的图片编辑应用程序。像往常一样,我的应用程序同时具有 File -> Save 菜单和 File -> Save As 菜单。

文件 -> 保存菜单链接到 saveDocument: 在 NSDocument 子类中

文件 -> 另存为菜单链接到 saveDocumentAs: 在 NSDocument 子类中

在这两种情况下,如果保存成功,我想向用户展示一个 NSAlert 表,说明保存成功,并且此表还为用户提供了将文档上传到 Facebook 等的选项。

我怎么知道文档已成功保存?

我知道在 File -> Save As 的情况下,我可以创建一个新的操作方法 mySaveDocument: 并调用

saveDocumentWithDelegate:didSaveSelector:contextInfo:

来自 mySaveDocument:但是我应该为 File -> Save As 做什么?

【问题讨论】:

  • 你知道有多少主流 Mac OS X 应用程序会弹出一个表格告诉你文件已成功保存?答:没有,而且有充分的理由。最好把你的“你想上传到 Facebook 吗?”保存面板本身的问题,然后在保存是否有效的情况下进行操作。中断用户的工作流程只是为了告诉他们是否有问题。

标签: cocoa macos


【解决方案1】:

在您的 NSDocument 子类中,覆盖:

- (BOOL)saveToURL:(NSURL *)absoluteURL
           ofType:(NSString *)typeName
 forSaveOperation:(NSSaveOperationType)saveOperation
            error:(NSError **)outError
{
    BOOL success = [super saveToURL:absoluteURL
                             ofType:typeName
                   forSaveOperation:saveOperation
                              error:outError];

    if (success) {
        …
    }

    return success;
}

每当保存文档时都会调用此方法。

有关保存文档时发生的情况的更多信息,请阅读Message Flow in the Document Architecture page of the Document-Based Applications Overview 文档。

【讨论】:

    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2011-07-06
    • 2016-06-18
    相关资源
    最近更新 更多