icloud - 如何让 NSMetadataQuery 将我保存的文档文件夹视为包?

标签 icloud uidocument info-plist nsmetadataquery

我正在编写一个应用程序,可以在本地和 iCloud 上保存和加载文档。本地工作正常,但我在使用 iCloud 时遇到问题。

文档被保存为一个包 - UIDocument 读取和写入一个 NSFileWrapper,其中包含一个图像文件、一个缩略图文件和一个信息 plist。当我将文档保存到 iCloud 然后查看“管理存储”下的文件时,我看到的是单个文件而不是包;更重要的是,当我使用 NSMetadataQuery 搜索文件时,它会为每个单独的文件而不是包返回一个 NSMetadataItem。结果,我的应用程序没有意识到有任何包要加载,而 iCloud 非常无用。

我认为如果我设置了文档类型并正确导出了 UTI,那么这些包将得到正确处理。对吗?如果是这样,将文档类型设置为包的 list 是什么?我有:

  • 添加了文档类型
  • 将 LSTypeIsPackage 设置为 YES(我试过 string YES 和 bool YES)
  • 将 CFBundleTypeExtensions 设置为包含一个字符串的数组:文件后缀
  • 将 LSHandlerRank 设置为所有者
  • 导出具有相同标识符的 UTI
  • 将其设置为符合 com.apple.package
  • 添加了一个 UITypeTagSpecification 字典,其中包含一个键 public.filename-extension 的数组,其中包含一个字符串:文件后缀

  • 我也尝试添加一个匹配的导入 UTI 来匹配导出的 UTI,但没有运气。

    我错过了什么?

    更新:我注意到 this question 中的 OP正在看到我想要的行为(即使他不想要),所以它一定是可能的。

    最佳答案

    基于 this我尝试从我的 plist 中删除 LSItemContentTypes,它奏效了。

    关于icloud - 如何让 NSMetadataQuery 将我保存的文档文件夹视为包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10962324/

    相关文章:

    ios - 在 IOS 中使用 iCloud 导出和导入文档

    ios - iCloud 应用程序备份大小

    ios - 在免费和付费版本之间保存数据

    iOS ICloud 核心数据从应用程序打开关闭

    ios - Mac 和 iOS 应用程序之间的通用 iCloud 容器?

    objective-c - iOS5.1 : synchronising tasks (wait for a completion)

    ios - 为现有项目的 Assets 目录中的图标选择应用程序精简

    ios - UIDocumentInteractionController 通过 Instagram 分享(且仅限 Instagram)

    ios - 具有多个具有本地化应用程序名称的目标的本地化项目

    ios - iOS 10 中隐私设置的自动提醒未显示