我正在编写一个应用程序,它可以在本地和 iCloud 上保存和加载文档。本地工作正常,但我遇到了 iCloud 问题。
文档保存为一个包 - UIDocument 读取和写入一个包含图像文件、缩略图文件和信息 plist 的 NSFileWrapper。当我将文档保存到 iCloud,然后查看“管理存储”下的文件时,我看到的是单个文件而不是包;更重要的是,当我使用 NSMetadataQuery 搜索文件时,它会为每个单独的文件而不是包返回一个 NSMetadataItem。结果,我的应用程序没有意识到要加载任何包,而且 iCloud 毫无用处。
我认为如果我设置了文档类型并正确导出了 UTI,那么这些包就会得到正确处理。对吗?如果是这样,将文档类型设置为包的清单是什么?我有:
- 添加了文档类型
- 将 LSTypeIsPackage 设置为 YES(我尝试过字符串 YES 和 bool YES)
- 将 CFBundleTypeExtensions 设置为包含一个字符串的数组:文件后缀
- 将 LSHandlerRank 设置为所有者
- 导出具有相同标识符的 UTI
- 将其设置为符合 com.apple.package
- 添加了一个 UITypeTagSpecification 字典,其中包含一个数组,用于键 public.filename-extension,其中包含一个字符串:文件后缀
我还尝试添加一个匹配的 Imported UTI 来匹配导出的 UTI,但没有运气。
我错过了什么?
更新:我注意到这个问题中的 OP看到了我想要的行为(即使他不想要它),所以它必须是可能的。