4

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

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

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

4

2 回答 2

1

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

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

于 2013-04-02T10:44:16.780 回答
0

如果您完全使用 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];
    }
}
于 2014-03-19T11:47:34.800 回答