通过PowerBox取消链接在NSOpenPanel中选择的符号链接用户

时间:2015-09-06 17:57:52

标签: objective-c cocoa sandbox nsopenpanel

在Cocoa中,即在OS X上,我想取消用户在沙盒环境下在NSOpenPanel中选择的符号链接。

我写的代码如下:

NSOpenPanel *openPanel = [NSOpenPanel openPanel];
openPanel.resolvesAliases = NO;
openPanel.canChooseDirectories = NO;
openPanel.allowedFileTypes = @[(NSString *)kUTTypeSymLink];

[openPanel beginSheetModalForWindow:[[self view] window]
                  completionHandler:^(NSInteger returnCode)
 {
     if (returnCode == NSFileHandlingPanelCancelButton) { return; }

     int status = unlink(openPanel.URL.fileSystemRepresentation);

     if (status < 0) {
         NSLog(@" failed unlinking symbolic link at %s", openPanel.URL.fileSystemRepresentation);
     }
 }];

NO设置为resolvesAliases属性非常有效,以便不解析符号链接。因此,openPanel.URL返回用户在openPanel中选择的正确位置。

但是,unlink命令失败,状态为-1,因为PowerBox没有为用户选择的URL提供符号文件的写入权限。

我当然将com.apple.security.files.user-selected.read-write密钥与YES添加到我的权利文件中。除此之外,我还使用Xcode 6.4 + OS X 10.10 SDK,并在OS X 10.10.5上运行。

如何成功取消链接我允许用户选择的符号链接? 或者,根本无法取消沙盒环境下的符号链接?

[注意]在这种情况下,我无法用OS X的别名或UNIX的硬链接替换符号链接。它必须是一个象征性的链接。

0 个答案:

没有答案
相关问题