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

Gaining access to /User/Library/Container/<identifier> in Sandbox

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

遍历文件时,在我打开该特定位置的 NSOpenPanel 之前,不会返回任何数据。这种行为是意料之中的,因为应用程序是沙盒的。

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

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

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

此致, 萨沙

如果不在您的应用程序上 NSOpenPanels 或拖动目录,您将无法执行任何操作 - 这是一项安全措施,因此 App Store 应用程序不会丢弃不属于它们的数据

我看到程序要求用户在 NSOpenPanel 中 select / 才能访问整个驱动器。同样,最好只询问您真正需要的东西,因为您可能无法通过审核。有些应用程序只有一个单独的 UI 来要求用户为它们 NSOpenPanel 一些目录,并且在您这样做之前不要继续。