更正权利标志以将文件保存在同一位置两次
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 没有引导我们得出正确的结论。 我见过很多情况下,审核小组出于拒绝的原因提供了误导性信息。以上是关于更正权利标志以将文件保存在同一位置两次的主要内容,如果未能解决你的问题,请参考以下文章
是否可以制作保存按钮(不另存为按钮)以将文档保存在特定路径中?