更正权利标志以将文件保存在同一位置两次

Posted

技术标签:

【中文标题】更正权利标志以将文件保存在同一位置两次【英文标题】:Correct entitlement flag to save a file in the same location twice 【发布时间】:2012-09-22 18:53:42 【问题描述】:

我在我的应用程序中使用NSSavePanel。在我的 OS X 10.7 上一切正常,但该应用程序被 Apple 拒绝,并附有以下评论:

第二次导出时,之前选择的保存位置不起作用。用户必须取消选择该位置,然后再次选择它才能写入文件。请确保您拥有必要的权利。

本次评测是在运行 OS X 10.8 的 iMac 上进行的。

这是我的保存面板代码:

NSSavePanel *savePanel = [NSSavePanel savePanel];
[savePanel setAllowedFileTypes:[NSArray arrayWithObject:@"mov"]];
[savePanel setDirectoryURL:[NSURL URLWithString:@"/Documents"]];
[savePanel setNameFieldStringValue: videoName];

[savePanel beginSheetModalForWindow:window completionHandler:^(NSInteger result)
    if (result == NSFileHandlingPanelOKButton) 
        NSError *error = nil;
        NSString *sourceFilePath = [NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle] resourcePath], videoName];
        NSString *destFilePath = [[savePanel URL] path];
        NSFileManager *fileManager = [[NSFileManager alloc] init];
        if(![fileManager copyItemAtPath:sourceFilePath toPath:destFilePath error:&error])
            NSLog(@"%@", error);
    
];

目前我正在使用这些标志:

 <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.assets.movies.read-write</key>
    <true/>
    <key>com.apple.security.files.downloads.read-write</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
</dict>

我必须使用什么权利标志来解决这个问题?

【问题讨论】:

所以每次用户想要“导出”时,都是通过nssavepanel选择保存位置对吧? 是的,Mark,他们通过 nssavepanel 选择保存位置。 【参考方案1】:

如果您要在应用程序的同一次运行中保存两次,则不需要任何权利;一旦用户从NSSavePanel 中选择了一个文件,它就会在您应用的沙箱中。如果两次都显示保存面板,这同样适用——它应该“正常工作”。如果连续运行之间的位置相同,并且第二次没有保存面板,则需要将安全范围的书签存储到文件中。

例如,请参阅此问题中给出的示例代码(以及已接受答案中的更正):App Sandbox: document-scoped bookmark not resolving; not returning any error

【讨论】:

在 Lion 中运行时是否可以将同一个文件保存两次?如果是这样,您是否有可能在 Mountain Lion 上运行,因为这就是它的测试方式?由于 API 更改,可能文件在第二次写入之前被锁定。如果它第一次起作用,我怀疑它与权利有任何关系,尽管应用程序审查团队可能已经提出了建议。如果你不能重现它,那么可能是应用审查团队的 cmets 没有引导我们得出正确的结论。 我见过很多情况下,审核小组出于拒绝的原因提供了误导性信息。

以上是关于更正权利标志以将文件保存在同一位置两次的主要内容,如果未能解决你的问题,请参考以下文章

我的ppt保存时出现“无法更正的错误”怎么办?

通过使用 VBA 浏览将文件保存在所需文件夹中

是否可以制作保存按钮(不另存为按钮)以将文档保存在特定路径中?

我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?

excel只读文件默认保存在哪

如何创建一个脚本,该脚本仅删除保存脚本的同一文件夹中的某些文件