gpt4 book ai didi

objective-c - Mac 沙盒应用程序失去对其他应用程序的文件权限

转载 作者:太空狗 更新时间:2023-10-30 03:09:02 27 4
gpt4 key购买 nike

我正在开发一款目前已被沙盒化的应用。它充当基本的文本编辑器。最近,我想测试当我同时在我的应用程序和另一个应用程序中打开一个文件时会发生什么,在一个应用程序中进行更新,然后在另一个应用程序中看到更新。我正在使用 CodaBBEdit 作为我的替代编辑器。如果我关闭沙盒——那么这个问题就不存在了。但是,由于自 3 月 1 日起应用程序需要进行沙盒化,我宁愿实现解决方案也不愿观望。

当我打开这两个文件并在我的应用程序中进行编辑,然后切换到另一个应用程序时,更改会反射(reflect)出来,以便那些编辑者拥有刚刚从我的应用程序中保存的版本。但是,如果我执行从他们的应用程序保存然后转到我的应用程序的相反操作 - 没有快乐。在不执行任何操作的情况下,控制台会报告两个特定错误:deny file-issue-extensiondeny file-write-data。该应用程序似乎正在失去编辑文档的权限,因为在我的应用程序中打开文档后,它被外部编辑器更改了。如果我尝试将文件保存在我的应用程序中,它会要求复制文档,因为它无法访问原始文档。这不会以相反的方式发生,因为这些应用程序没有被沙盒化,因此具有我的应用程序没有的权限。如果您不希望出现这种行为,您似乎也无法阻止其他应用进行更改。

developer.apple.com 上的文档没有提到这种情况。我不确定这是否是预期的行为。如果是,那么我可以告诉我的用户文档权限已丢失,他们应该保存新版本或重新打开文件。如果这不是预期的行为,那么 NSDocument API 中的什么方法会在文件丢失后授予对该文件的权限?我假设答案是前者,这是有意为之的,但任何人都可以确认并且有文档吗?

最佳答案

Without performing any action, the console reports two specific errors: deny file-issue-extension and deny file-write-data. The app appears to be losing privileges to edit the document since it was changed by an external editor after the document was opened in my app. If I try to save the file in my app, it asks to duplicate the document because it has lost access to the original document

在这种情况下,正确的做法是不要覆盖文件,而是提示用户是否要重新加载文档,如果需要,请重新加载然后写入。

操作系统不允许对已更改的文件进行盲写,这是正确的做法。

查看 NSFilePresenter - (void)presentedItemDidChange 看它是否改变了。重新读取文件,然后查看是否可以保存它。你不会说你被拒绝阅读文件。

此外,由于您没有发布任何代码,显示您使用什么代码访问文件和保存它可能会有所帮助。 NSDocument 已内置处理沙箱中某些类型的文件更改。

关于objective-c - Mac 沙盒应用程序失去对其他应用程序的文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838353/

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