【问题标题】:exclude iCloud as option in NSSavePanel/NSOpenPanel在 NSSavePanel/NSOpenPanel 中排除 iCloud 作为选项
【发布时间】:2013-01-12 00:33:56
【问题描述】:

我在后台使用 iCloud 文件同步来保持我的 Mac 应用程序的实例同步,因此我为此设置了权利。不幸的是,这意味着当我调用 NSSavePanel 时,iCloud 也会显示为可能的保存位置。

因为我的应用程序不会生成打算重复使用或重新导入我的应用程序的文件,所以我没有 iCloud 打开面板。但是,我的应用确实允许用户导出简单的 HTML 或 CSV 报告。我不希望一个合理的用户在我的应用程序中导出报告时选择 iCloud 作为他们的保存目的地,但 Apple 现在已将此标记为拒绝该应用程序的理由,因为可以想象他们可以这样做,然后这些文件实际上被搁置在云。

当用户保存文件时,如何从潜在选项中抑制 iCloud?

【问题讨论】:

    标签: icloud nssavepanel


    【解决方案1】:

    我的应用程序也因为能够将导出的文档保存到 iCloud 而被拒绝。我在给审阅者的说明中指出,保存到 iCloud 是不合理的,但他们第二次拒绝了。我在评论反馈和 Apple 的开发者板上询问了示例代码,但没有得到回应。最后我放弃了,只是关闭了 iCloud 支持。这很方便,但不是必需的。

    如果您在 TextEdit 中创建文档,然后在 iCloud 中导出为 PDF,您会创建一个 TextEdit 无法打开的文件。 (预览版可以。)按照苹果自己的规则,TextEdit应该被拒绝。

    【讨论】:

    • 我最终解决了这个问题,方法是捕捉用户何时选择 icloud 作为保存目的地,然后弹出警告,建议他们不要这样做,请选择更合理的位置.废话,真的,但苹果接受了“解决方案”并批准了该应用程序。
    【解决方案2】:

    如果您完全使用 iCloud 并且有一个保存面板,那么 iCloud 将作为保存位置的一个选项。希望将来这将是可选的,但现在我的解决方案是在我的应用程序菜单中添加一个“打开”选项,允许我的应用程序使用该项目的系统默认应用程序打开我保存的文件。

    例如,我的应用程序允许用户将报告保存为 txt 文件。因此,当他们再次在 iCloud 中打开它们时,它们会在 TextEdit 中打开。

    这是一个简单的方法,您可以添加到 AppDelegate 并链接到“打开”菜单项。

    - (IBAction)openDocument:(id)sender {
        NSOpenPanel *openPanel = [[NSOpenPanel alloc] init];
        if ([openPanel runModal] == NSOKButton)
        {
            NSURL *aFilePath = [[openPanel URLs] objectAtIndex:0];
            NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
            [workspace openURL:aFilePath];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2021-11-28
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多