因此,我有一个沙盒应用程序,它允许用户将文件从Finder拖放到项目窗口中。
我想从它们的现有位置(即通过引用)使用这些文件,而不是将它们复制到项目文件夹中,因为用户可能已有大量的文件库。
在应用程序运行时,这些文件完全可供读取。 (它们是.mp4,我可以在AVPlayer视图中预览它们)。
保存应用程序的项目时,将包含文件的NSURL。
当应用重新启动并在以后重新打开项目时,文件不可用,并且控制台显示deny(1)文件读取数据-这意味着该文件不可收录。 (拒绝访问)。
大概是因为文件在沙箱外部。但是,将它们放到应用程序上时,它们是可读的。在我看来,该应用程序在首次放置时就将它们视为“用户选择的”,因此它们是可读的,但是在下一个会话中,因为它们是从NSCoder作为NSURL加载的,因此不被视为用户选择的,因此无法访问!
我的应用当前具有以下权利:
com.apple.security.files.user-selected.read-only
com.apple.security.files.user-selected.read-write
我需要处理权利等问题,以便以后重新加载文件吗?
最佳答案
首次删除文件时,您需要创建并保存一个具有安全范围的书签,您可以在以后的应用程序启动中使用该书签来重新获得对该文件的访问权限。阅读Apple深度应用程序沙箱中的Security-Scoped Bookmarks and Persistent Resource Access。