是否可以通过拖放或共享扩展来修改OS X应用程序的沙盒容器中的原始文件?

时间:2015-07-14 12:58:16

标签: macos cocoa drag-and-drop sandbox appstore-sandbox

我有一个鞋盒类型(与基于文档相对)OS X应用程序,它将图像存储在应用程序的沙盒容器中。

这些图片可以通过Share Extensions(以NSURL的形式)共享或通过拖放方式导出。

当图像与图像编辑器共享(例如Acorn提供共享扩展)或放在图像编辑器上时,图像编辑器会从我的沙箱容器中打开文件,现在可以更改,重命名或删除这个文件 - 这可能导致我的应用程序出现各种不一致。

首先,我很惊讶,因为我认为,沙箱中的文件只能由应用程序本身访问。但是当我故意分享NSURL时,情况似乎并非如此。

那么如何防止有人可以更改我的沙盒容器中的文件,同时还提供拖放和共享扩展?

  • 我尝试不共享NSURL而是NSImages,但许多共享扩展程序不适用于NSImages,所以这不是一个好的选择。
  • 是否可以对沙箱中的文件进行写保护?
  • 在我提供共享或拖放之前,我是否应该将图像的副本复制到临时位置(对于大图像来说可能会很慢?)

我很高兴听到您的建议或了解有关此问题的更多信息。

1 个答案:

答案 0 :(得分:1)

创建NSURL的书签。

因此,用户仍然可以重命名,移动和删除文件,但您会注意到并知道新的位置和名称,但仍然可以访问该文件。即使它在你的沙箱之外也应该工作。 所以你可以处理这个。 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/

使用NSURL的好处之一,而不是简单的路径字符串。