拖放到沙盒应用程序中

时间:2014-01-10 09:03:17

标签: cocoa permissions appstore-sandbox

我有一个应用程序需要将文件保存在与应用程序窗口上的源文件拖动相同的位置。在您选中“用户选择的文件”后,沙盒不会让我立即....

感谢。

2 个答案:

答案 0 :(得分:3)

将文件拖放到应用程序时,沙箱仅授予对此文件的访问权限。你甚至无法重命名它。要在同一目录中写入新文件,请使用NSOpenPanel获取对目录的写入权限。

例如:

 - (void)showGrantAccessForFolderOfFile:(NSURL *)urlOfFile
 {
    NSURL *urlToGrant = [urlOfFile URLByDeletingLastPathComponent];
    NSOpenPanel *openPanel = [NSOpenPanel openPanel];
    [openPanel setAllowsMultipleSelection:NO];
    [openPanel setCanChooseDirectories:YES];
    [openPanel setCanChooseFiles:NO];
    [openPanel setCanCreateDirectories:NO];
    [openPanel setDirectoryURL:urlToGrant];

    [openPanel setTitle:@"Grant Access To Folder"];
    [openPanel setMessage:@"Please grant access to the file’s folder"];
    [openPanel setPrompt:@"Grant Access"];

    // then run the panel as in documentation and handle errors
    // could also set a delegate and grey out other directories
    // store the sandboxed to access it later again
}

答案 1 :(得分:2)

您是否检查了Apple的文档,特别是 Drag and Drop Programming Topics

  

重要提示:虽然您可以支持拖动文件路径,但一般情况下,除非您确定,否则应该避免这样做   目标应用永远不会在应用沙箱中运行。如果你使用   NSString,OS X无法知道该字符串是否应该是   被解释为一条道路;因此,OS X不会扩展目的地   应用程序的沙箱允许访问该文件或目录   位置。

     

而是使用NSURL,书签或文件名粘贴板类型。