2017-04-15 70 views
0

我正在开发一个应用程序,我想访问/User/<username>/Library/Containers文件夹来读取一些数据。访问/用户/图书馆/容器/ <identifier>在沙盒

迭代文件时,直到我在该特定位置上打开NSOpenPanel才会返回数据。这种行为是可以预料的,因为该应用程序是沙盒。

我安装了另一个应用程序,名为“AppManager”(沙盒,可在App Store中使用)。该应用程序还从该文件夹读取数据,但我只需打开/Applications文件夹上的NSOpenPanel

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

沙盒应用如何在不打开NSOpenPanel的情况下访问/User/<username>/Library/Containers?我可以通过打开一个NSOpenPanel访问多个目录吗?

问候, 萨沙

回答

2

不会对您的应用程序的NSOpenPanels或拖动目录你不能做任何事情 - 这是一种安全措施,因此App Store的应用程序不会不属于他们的垃圾数据

我看到程序要求用户只需选择/,NSOpenPanel即可访问整个驱动器。同样,最好只是询问你真正需要的东西,因为你可能没有经过审查。有些应用程序只有一个单独的UI,可以要求用户使用NSOpenPanel的某些目录,并且不会继续执行。

+0

你好,我也比较喜欢这种方法。我只是好奇,指定的应用程序如何做到这一点。它要求/应用程序并访问/ Users/ /库。 –

+1

也许应用程序是旧的(预沙箱),或者它可能只是读取自己的容器(你总是有权访问它) – Alistra

+0

去年发布了最新的更新,所以它是沙盒(或者它不需要显示反正是一个对话框),应用程序会从这些目录中删除文件,所以它可以在/ Library /自己的容器之外完全访问。很奇怪。 –