我想问一下沙箱。不能创建文件?

时间:2014-04-03 14:41:22

标签: xcode macos cocoa sandbox

我的程序处理目录中的文件,然后在此目录中创建另一个文件。如果你没有打开沙箱结果是正确的,如果我打开沙箱然后创建一个文件将失败。但是我发现有些人可以做到。谁能告诉我该怎么做?

1 个答案:

答案 0 :(得分:0)

沙箱的核心目的是防止应用程序在用户未经许可的情况下读取或写入文件。以下是获取写入文件权限的三种方法:

A)如果您的应用程序旨在处理目录中的所有文件,读取现有文件并写出新文件,则使用NSOpenPanel让用户选择目录 。这会将您的应用程序读/写/创建授予该目录。将向用户显示一个询问目录的对话框。

B)如果您正在处理用户选择的文件,然后生成具有相同名称的文件,则在相同的目录中,但使用不同的文件扩展名(例如,将文件从一种格式转换为另一种格式的应用程序),然后您可以使用沙箱的 Related Items 功能。这要求您在应用程序Info.plist中列出两个文件扩展名,为这些NSIsRelatedItemType条目添加布尔Info.plist标记,并使用NSFileCoordinator& NSFilePresenter类 - 基于标准文档的应用程序自动执行的操作。用户将看到一个询问源文件的对话框。

C)您正在处理文件并使用不同的名称或在不同的目录中生成另一个文件。您需要使用NSOpenPanel来访问该文件,并使用NSSavePanel来获取写入结果的权限。将向用户显示两个对话框。

Apple在App Sandbox Design Guide中提供了概述。

HTH

相关问题