gpt4 book ai didi

cocoa - 在 cocoa 中 : How to set permission to read/write to a folder?

转载 作者:行者123 更新时间:2023-12-03 16:24:17 26 4
gpt4 key购买 nike

我正在转换图像大小,然后将新文件保存到原始图像文件所在的同一目录中。

我只能设置“images”目录的权限。如果我的应用程序需要选择该目录内的图像,它将按预期工作。如果我选择另一个目录中的图像(例如用户创建的目录文件夹),则不会显示新图像。我在应用程序沙箱中只看到“用户选择的文件”目录、“图像”目录、“下载”目录、“图片”目录、“音乐”目录和“电影”目录。

有没有办法以编程方式授予此权限?

最佳答案

您遇到了对沙盒模型长期存在的担忧;支持在同一位置将输入文档转换为输出文档的应用程序。

Apple 通过应用程序 Info.plist 中文档类型的 NSIRelatedItemType 条目解决了部分问题。如果此标志存在且在多个文档类型条目中为 YES,则当您的应用程序被授予对其中一种类型的文件的访问权限时,您的应用程序将有权创建任何其他类型的文件。

例如,TextEdit 为 .txt.rtf.rtfd 文件类型设置了此标志,因此一旦授予对文件的访问权限对于任何这些类型,它都可以创建同名但任何其他类型的文件,而无需进一步的用户许可。它启用诸如“转换为纯文本”之类的命令。

从你的问题看来,你并没有这样做,而是将“image.png”转换为“image-resized.png”,即更改名称而不是类型。如果应用程序未获得用户的进一步许可,则不支持此操作。

最好的解决方法是询问用户对其想要调整大小的文件所在文件夹的权限。一旦应用程序可以在该文件夹中执行任意数量的文件创建 - 正如您观察到的授予访问某些特殊文件夹的权限一样。

您可以遵循的一个流程是:

1 - 当需要创建输出文件时,检查应用程序是否有权访问包含的文件夹 - 您可以为此使用access函数(请参阅OS X手册第 2 部分,例如在终端中“man access”或在 Xcode 文档中搜索 access)。

3 - (是的,我错过了 2 个,见下文)如果您没有访问权限,则向用户请求包含文件夹的访问权限 - 抛出一个合适的 NSOpenPanel 提示他们选择包含的文件夹并解释原因。

4 - 一旦您被授予访问权限保存 - 将安全范围的书签存储到应用程序“应用程序支持”目录中的文件中的该文件夹中。您可以在构建缓存时“修剪”缓存 - 任何文件夹的书签都无需为文件系统树中其下方的任何文件夹添加书签。这样做可以:

2 - 如果您没有访问权限,请检查已保存书签的缓存,并查看是否有该文件夹的书签,如果有,请激活它。请注意,此检查针对文件系统树中包含文件夹或其任何父文件夹的书签。

随着时间的推移,使用此过程,您将积累对用户使用的文件夹的访问权限。您应该为用户提供一种清理缓存的方法。

事情并不像听起来那么糟糕! HTH。

关于cocoa - 在 cocoa 中 : How to set permission to read/write to a folder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com