使用NSOpenPanel保存到沙盒应用程序中的目录不起作用,但拖放操作不起作用

时间:2016-02-26 00:51:26

标签: macos cocoa permissions appstore-sandbox

我正在开发一个沙盒OS X应用程序,其中图像保存到用户选择的目录中。用户可以通过两种方式选择输出目录:使用NSOpenPanel选择目录,然后将目录拖放到应用程序中。

当我使用拖放方法时,一切正常,我的文件保存没有问题。

但是,如果我使用NSOpenPanel选择目录,我会收到错误513:

  

错误513:“您无权将文件'x.jpg'保存在'y'文件夹中。”

NSOpenPanel和拖放代码都将他们选择的URL保存在同一个地方并以相同的方式处理它。有什么可以解释这种差异?是否必须以特定方式设置NSOpenPanel以授予对目录的读/写权限?

为了记录,我在使用我的应用程序的过去一年中从未注意到这个问题,所以它可能是最近对Cocoa的改变 - 但我不是百分之百确定。

2 个答案:

答案 0 :(得分:2)

正如所料,看起来我使用的是NSOpenPanel错误。

$('#lock-crosshair').on('click', function() { plot.lockCrosshair({ x: 4 }); }); $('#unlock-crosshair').on('click', function() { plot.unlockCrosshair(); }); 中存储来自委托电话的网址。本来应该通过panel(_ sender: AnyObject, validate url: URL)中的回调来调用面板的网址属性。

答案 1 :(得分:0)

在我的情况下,我错误地将个人文件写入通过将每个文件名连接到URL创建的路径:

panel.directoryURL

将其更改为:

panel.urls.first

...有效。希望这可以节省一些头痛。