Objective c 如何在沙盒环境中使用NSSavePanel获取权限

Objective c 如何在沙盒环境中使用NSSavePanel获取权限,objective-c,Objective C,有一个沙盒环境的项目,现在我想让用户选择一个目录来保存文件。例如,当用户在“保存”面板中选择“桌面”时,我会将文件保存到目录“~/Desktop”。 代码如下: NSSavePanel *savePanel = [NSSavePanel savePanel]; NSInteger result = [savePanel runModal]; if(result == NSFileHandlingPanelOKButton) { NSString *

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

    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“您没有权限将文件“2.txt”保存在“Desktop”文件夹中。”

我已经在
功能
设置中启用了
读取/写入
用户选择的文件
。任何人都可以告诉我现在该怎么做


提前感谢。

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

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



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

使用
NSOpenPanel
选择目录。