Mac App Sandboxed:如何导入没有扩展名、没有图标的文件

Posted

技术标签:

【中文标题】Mac App Sandboxed:如何导入没有扩展名、没有图标的文件【英文标题】:Mac App Sandboxed: How to import file with no extension, no icon 【发布时间】:2014-03-07 02:41:58 【问题描述】:

我需要在文件夹中导入数据。数据来自控制科学仪器的 linux 机器,供应商将每次测量的结果放在一个文件夹中,文件夹内有两个文件,一个名为“参数”,另一个名为“数据”。我的用户会将文件夹复制到他们的 Mac 并将数据导入我的程序。如果我的应用程序没有沙盒化,我可以毫无问题地获取文件夹的内容,并将参数和数据文件读入我的应用程序。当我的应用程序被沙盒化时,NSOpenPanel 告诉我文件夹内没有 url。

NSArray *files = [panel URLs];

在应该有两个对象时返回一个包含零个对象的数组。如何使这些文件对我的沙盒应用可见?

【问题讨论】:

【参考方案1】:

为了方便您的用户,请尝试按以下方式使用“打开面板”。这限制他们选择一个目录(而不是两个文件):

NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
[panel setAllowsMultipleSelection:NO];
// don't set anything with setAllowedFileTypes:

然后您将收到零个或一个指向该目录的 URL(取决于用户是否按下了确定或取消)。然后将此 URL 与NSDirectoryEnumerator 或NSFileManager 提供的类似内容一起使用以获取目录中的文件。

还要确保使用以下方法之一以适当(不推荐)的方式运行面板:

– beginSheetModalForWindow:completionHandler:
– beginWithCompletionHandler:
– runModal

【讨论】:

以上是关于Mac App Sandboxed:如何导入没有扩展名、没有图标的文件的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins: because the document's frame is sandboxed and the 'allow-scripts' permission

如何在没有 Mac 的情况下启用应用内购买

如果自动扩缩功能无法创建新实例,App Engine 请求会发生啥情况?

如何为 Mac 创建 Cocoa App 首选项?

如何安装Mac 上最强大的终端 iTerm2

如何在 OSX 上为 Python 应用程序启用 App 沙箱(Python 应用程序针对 Mac App Store)