在NSSavePanel / NSOpenPanel中将iCloud排除为选项

时间:2013-01-12 00:33:57

标签: icloud nssavepanel

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

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

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

2 个答案:

答案 0 :(得分:1)

我的应用也因为能够将导出的文档保存到iCloud而被拒绝。我在评论员的说明中指出保存到iCloud是不合理的,但他们第二次拒绝了。我询问了关于评论反馈的示例代码,以及Apple的开发人员委员会,并没有得到任何答复。最后我放弃了,只是关闭了iCloud的支持。这很方便,但不是必需的。

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

答案 1 :(得分:0)

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

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

这是一种简单的方法,您可以将其添加到AppDelegate并链接到' Open'菜单项。

- (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];
    }
}
相关问题