【问题标题】:How do I make NSMetadataQuery see my saved documents' folders as packages?如何让 NSMetadataQuery 将我保存的文档的文件夹视为包?
【发布时间】:2012-06-13 07:24:20
【问题描述】:

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

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

认为如果我设置文档类型并正确导出 UTI,则可以正确处理包。对吗?如果是这样,将文档类型设置为包的清单是什么?我有:

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

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

我错过了什么?

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

【问题讨论】:

    标签: icloud uidocument info-plist nsmetadataquery


    【解决方案1】:

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

    【讨论】:

    • 哇。为了这个问题,我在键盘上敲了将近一个月。这显然是一个错误。谢谢。
    • 从昨天开始我遇到了完全相同的问题。我无法通过删除 LSItemContentTypes 来解决这个问题。请建议是否可以通过任何其他方式实现。非常感谢。
    • 当我需要 LSItemContentTypes 来启用将这种文件类型的文件导入我的应用程序时,情况如何?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    相关资源
    最近更新 更多