如何在沙盒应用程序中使用用户选择的文件内的路径打开文件

时间:2019-05-09 03:13:53

标签: macos nsdata sandbox nsopenpanel

我试图在我的macOS沙盒应用程序中写入第3方文件格式的导入。用户打开的文件是一个Json文档,而该文档内部的URL指向一些必需的外部数据文件。在这种情况下,它是本地二进制数据文件的相对路径。我可以创建此文件的绝对路径,但无法使用[NSData datawithcontentsoffile:path]打开它,因为我的应用已沙箱化(在macOS App Store上)。如果我关闭沙箱,则可以打开外部二进制文件。

在装有沙盒的应用程序中打开外部文件有哪些好的策略?我正在考虑打开第二个nsopenpanel并要求用户选择另一个文件,但这似乎很尴尬。

2 个答案:

答案 0 :(得分:0)

沙盒应用程序之间只有一个区别,我无法想到-如果应用程序被沙盒化,则主目录指向该应用程序的沙箱,否则它指向用户在文件系统上的主目录。因此,在创建文件路径时,请考虑使用NSFileManager类的URLsForDirectory:inDomains:方法返回目录的位置。

答案 1 :(得分:0)

除了打开第二个nsopenpanel并要求用户选择包含json文档的文件夹外,我没有找到其他解决方案。一旦获得了该文件夹的许可,我就可以打开json文档中给定的任何文件,只要它在json文档的相同文件夹或子文件夹中即可。