在Sandbox中获取对/ User / Library / Container / <identifier>的访问权限

时间:2017-04-15 16:26:46

标签: swift macos sandbox access nsopenpanel

我正在开发一个应用程序,我想访问/User/<username>/Library/Containers文件夹来读取一些数据。

迭代文件时,在我在该特定位置打开NSOpenPanel之前,不会返回任何数据。这种行为是可以预期的,因为应用程序是沙箱化的。

我安装了另一款名为&#34; AppManager&#34; (沙盒,可在App Store中找到)。该应用程序还会读取该文件夹中的数据,但我只需打开NSOpenPanel文件夹中的/Applications

我读到了FileManager方法URLForDirectory:inDomain:appropriateForURL:create:error:,这似乎是一个很好的起点,但不知怎样,这种方法不可用?

沙盒应用如何(如果可能)可以在不打开/User/<username>/Library/Containers的情况下获得对NSOpenPanel的访问权限?我只能打开一个NSOpenPanel吗?

,是否可以访问多个目录?

此致 的Sascha

1 个答案:

答案 0 :(得分:2)

如果没有NSOpenPanels或拖动您应用中的目录,您就无法执行任何操作 - 这是一项安全措施,因此App Store应用不会删除不属于他们的数据

我看到程序要求用户只需选择/中的NSOpenPanel即可访问整个驱动器。再次,最好只询问你真正需要的东西,因为你可能没有过去的评论。有些应用只是有一个单独的用户界面,要求用户NSOpenPanel为他们提供一些目录,并且在你这样做之前不要继续。