上下文 我正在编写一个允许用户选择文件夹,然后扫描它们以查找文件的应用程序。该文件夹可以在用户的机器、iCloud 或外部存储上。该应用程序将这些文件和源文件夹的详细信息保存到一个文档中,因此用户可以在将来访问这些文件并重新扫描源文件夹。该应用程序是使用 MacOS 和 iPad 的 SwiftUI 框架编写的。
问题 鉴于这是一个沙盒应用程序,我需要创建安全范围的书签,以便能够访问已保存到文档中的文件夹。我有两个问题:
- 使用 ReferenceFileDocument 协议时,如何创建文档范围的书签。我需要文档的 URL,但我永远无法访问它。我想在实现 fileWrapper 函数时实现这样的目标(裸骨示例):
func fileWrapper(快照:MyDocument,配置:WriteConfiguration)抛出-> FileWrapper { : // 其他代码 : let bookmarkDataToPersist = snapshort.someFileURL.bookmarkData(options: .withSecurityScope,包括ResourceValuesForKeys: nil, relativeTo: documentURL) : // 添加 bookmarkDataToPersist 到 fileWrapper 的其他代码 }
- 理想情况下,用户将能够:
- 将外部驱动器连接到他们的 Mac
- 选择该驱动器上的文件夹
- 保存文档,这会将书签保存到该文件夹的 URL
- 将文档发送到 iPad(通过电子邮件或 iCloud 驱动器)
- 使用 iPad 版 App 打开文档
- 将外部书签连接到 iPad
- 从文件夹中重新扫描文档中标记为书的文件夹
但是考虑到 1) 中的问题以及文档书签不能指向文件夹的事实,有没有办法?
任何想法或建议都将受到欢迎。