我需要在文件夹中导入数据。数据来自控制科学仪器的linux盒子,供应商将每个测量的结果放入文件夹,文件夹里面有两个文件,一个名为“参数”,另一个名为“数据”。我的用户将文件夹复制到他们的Mac并将数据导入我的程序。如果我的应用程序没有沙盒,我可以获取文件夹的内容,并将参数和数据文件读入我的应用程序。当我的应用程序被沙盒化时,NSOpenPanel告诉我文件夹中没有URL。
NSArray *files = [panel URLs];
当p应该有两个时,返回一个零对象的数组。如何使这些文件对我的沙盒应用程序可见?
答案 0 :(得分:1)
为了方便用户,请尝试按以下方式使用“打开面板”。这限制了他们选择一个目录(而不是两个文件):
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
[panel setAllowsMultipleSelection:NO];
// don't set anything with setAllowedFileTypes:
然后,您将收到零或一个URL(取决于用户是否按OK或取消),该URL指向该目录。然后将此URL与NSDirectoryEnumerator
或NSFileManager提供的类似内容一起使用,以获取目录中的文件。
另外,请确保使用以下方法之一以适当(不推荐)的方式运行面板:
– beginSheetModalForWindow:completionHandler:
– beginWithCompletionHandler:
– runModal