如何在沙盒环境中使用NSSavePanel获得许可

时间:2018-07-25 10:16:59

标签: objective-c

有一个带有沙箱环境的项目,现在我想让用户选择一个目录来保存文件。例如,当用户在保存面板中选择“桌面”时,我会将文件保存到目录“〜/桌面”。 代码如下:

    NSSavePanel *savePanel = [NSSavePanel savePanel];
    NSInteger result = [savePanel runModal];
    if(result == NSFileHandlingPanelOKButton)
    {
        NSString *dir = [savePanel.URL.path.stringByDeletingLastPathComponent stringByAppendingPathComponent:@"2.txt"];
        NSError *err;
        NSLog(@"%@",dir);
        [@"asasasa" writeToFile:dir atomically:YES encoding:NSUTF8StringEncoding error:&err];
        NSLog(@"%@",err);
    }

发生错误Code=513 "You don’t have permission to save the file “2.txt” in the folder “Desktop”.

我已经在Read/Write设置中启用了User Selected File中的Capabilities。谁能告诉我我现在该怎么办?

谢谢。

1 个答案:

答案 0 :(得分:0)

您没有将文件保存到获得许可的URL,而是更改了URL。 不允许

在保存面板中指定2.txt,以便您返回的URL为~/Desktop/2.txt。然后保存即可。


旁注:还有一个与URL相关的API,例如writeToURL:atomically:encoding:errorURLByAppendingPathComponent: