我正在沙盒化一个应用程序(已经成功运行了几年非沙盒)。
需要批量处理PDF并将其导出并进行一些更改。
用户有两种选择:
- 将生成的PDF导出到指定的文件夹中,或
- 将PDF导出到与原始文件相同的文件夹中。
第一个选项没有问题:用户在NSOpenPanel中选择一个文件夹,我创建安全范围的书签,稍后解决它,并且文件被成功保存。
但是,当用户选择将每个文件保存到其封闭文件夹中时,它们不会显式选择任何文件夹。他们只选择文件。
我可以为每个文件创建安全范围的书签,但它仍然不允许我访问文件的封闭文件夹。我尝试保存文件时收到权限错误。
当我尝试为封闭文件夹创建书签时,出现错误,指出文件无法打开:
NSURL *url = [NSURL fileURLWithPath:[filePath stringByDeletingLastPathComponent]];
NSData *bookmarkData = [url
bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&err];
据我所知,这是因为用户没有明确选择文件夹,因此无法创建安全范围的书签。
我做了大量的研究并尝试了各种选择,但无法到达任何地方。
任何帮助将不胜感激!
答案 0 :(得分:2)
正如您在问题末尾所表达的那样,您的理解是正确的。您需要询问用户对封闭文件夹的许可或提出其他设计。如果您要更改文件扩展名(例如编辑器可以转换文件格式等),则有Apple解决方案,但不适用于PDF格式的PDF格式。将书签缓存到封闭文件夹中,随着时间的推移,您的应用需要不经常询问用户(记住文件夹的书签可以访问该点下面的整个子树)。