我正在开发一个当前被沙盒化的应用程序。它充当基本的文本编辑器。最近,我想测试当我在我的应用程序和另一个应用程序中同时打开一个文件时会发生什么,在一个应用程序中进行更新,然后在另一个应用程序中查看更新。我正在使用Coda
或BBEdit
作为我的替代编辑器。如果我关闭沙盒——那么这个问题就不存在了。但是,由于从 3 月 1 日起,应用程序需要被沙盒化,我宁愿实施解决方案,也不愿观望。
当我打开这两个文件并在我的应用程序中进行编辑然后切换到另一个应用程序时,更改会反映出来,以便这些编辑器具有刚刚从我的应用程序保存的版本。但是,如果我执行相反的操作,即从他们的应用程序中保存然后转移到我的应用程序 - 不高兴。在不执行任何操作的情况下,控制台会报告两个特定错误:deny file-issue-extension
和deny file-write-data
. 该应用程序似乎正在失去编辑文档的权限,因为在我的应用程序中打开文档后,它被外部编辑器更改。如果我尝试将文件保存在我的应用程序中,它会要求复制文档,因为它无法访问原始文档。这不会反过来发生,因为这些应用程序没有被沙盒化,因此具有我的应用程序没有的权限。如果您不想要这种行为,您似乎也无法阻止其他应用程序进行更改。
developer.apple.com 上的文档没有提到这种情况。我不确定这是否是预期的行为。如果是,那么我可以告诉我的用户文档权限已丢失,他们应该保存新版本或重新打开文件。如果它不是预期的行为,那么 NSDocument API 中的什么方法会在文件丢失后授予对文件的权限?我假设答案是前者,这是有意的,但任何人都可以确认并且有文件吗?