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

Macos 如何在沙盒应用程序中使用用户选定文件内的路径打开文件,macos,nsdata,sandbox,nsopenpanel,Macos,Nsdata,Sandbox,Nsopenpanel,我正在尝试在macOS沙盒应用程序中编写第三方文件格式的导入。用户打开的文件是一个Json文档,该文档中有一个指向所需外部数据文件的url。在本例中,它是本地二进制数据文件的相对路径。我可以创建此文件的绝对路径,但无法使用[NSData DATAWITH CONTENTS OFFILE:path]打开它,因为我的应用程序是沙盒(在macOS应用商店上)。如果我关闭沙盒,那么我可以打开外部二进制文件 在沙盒应用程序中打开外部文件有哪些好策略?我正在考虑打开第二个nsopenpanel并要求用户选择

我正在尝试在macOS沙盒应用程序中编写第三方文件格式的导入。用户打开的文件是一个Json文档,该文档中有一个指向所需外部数据文件的url。在本例中,它是本地二进制数据文件的相对路径。我可以创建此文件的绝对路径,但无法使用[NSData DATAWITH CONTENTS OFFILE:path]打开它,因为我的应用程序是沙盒(在macOS应用商店上)。如果我关闭沙盒,那么我可以打开外部二进制文件


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

沙盒应用程序和我想不出来的应用程序之间只有一个区别-如果应用程序是沙盒的,则主目录指向应用程序的沙盒,否则,它将指向文件系统上用户的主目录。因此,在使用NSLMeMeNANGER类的方法创建文件路径时,要返回目录的位置。

< P>除了打开第二个NSOpenPAND之外,没有发现任何解决方案,并要求用户选择包含JSON文档的文件夹。一旦我获得了文件夹的权限,我就可以打开json文档中给定的任何文件,只要它位于json文档的同一文件夹或子文件夹中。

如果应用程序是沙盒,并且二进制文件在沙盒中,你应该能够使用FileManager翻译沙盒中的相对路径。我不确定我是否得到了这个建议。您是否想到了一种特殊的NSFileManager方法?