gpt4 book ai didi

cocoa - NSMetadataQuery 将文档移动到 iCloud 后找不到文档

转载 作者:行者123 更新时间:2023-12-03 16:46:20 29 4
gpt4 key购买 nike

在我的 Mac 应用程序中,我有一个 NSMetadataQuery 来查看应用程序的 iCloud 目录。当用户决定从应用程序内启用 iCloud 时,我按以下顺序执行以下操作:

  1. 调用 [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] 建立对 iCloud 容器的访问
  2. 启动 NSMetadataQuery 以查找 iCloud 容器中的所有文件(模式:"*")
  3. 现在,我迭代本地容器中的所有文件,并使用 [fileManager setUbiquitous:YES itemAtURL:fileURL destinationURL:targetURL error:&error] 将它们移动到 iCloud

我将两种类型的文档移至 iCloud:

  1. 以文件包形式存储的实际文档
  2. 对于每个文档,我都有一个作为简单二进制文件的 .preview 文件

我的问题是,元数据查询返回我的二进制预览文件,但返回我的实际文档,直到我重新启动我的应用程序(或打开来自终端的应用程序的 iCloud 文件夹 - 在这种情况下,我的应用程序获得包含所有文件的另一个查询结果)。

这是一些奇怪的缓存问题吗?难道是因为文档是文件包而不是简单的二进制文件?

我不明白为什么这会成为一个问题。如果我重新启动应用程序,查询会正确返回所有文件。

这可能是我的自定义文档类型在 Info.plist 中导出的方式存在问题吗?

最佳答案

Could this be a problem with the way my custom document type is exported in Info.plist?

我想是这样:您所描述的问题很可能是因为您的文档格式是文件包(我假设是用 NSFileWrapper 编写的)。请记住,包位是在写入文件时设置的,因此,如果您有其他应用程序写入 iCloud,这可能会使问题更加困惑,因为它不是关于解释文件包,而是写入 以正确的方式进行。

遗憾的是,NSMetadataQuery 会忽略文件夹,因此除非您在将文件写入 iCloud 容器的应用程序中正确将文件类型注册为 bundle ,否则您的文件永远不会被报告。

info.plist 中有很多类似且可能令人困惑的设置,因此很多事情都可能出错。当我在 OS X 上正确注册文档文件类型,但在 iOS 上注册失败时,我遇到了问题:https://stackoverflow.com/a/14993694/388412

您应该做的第一件事是转到https://developer.icloud.com/#documents并查看您正在查看的是文件(正确)还是文件夹(问题)。

处理您的 info.plist 文档类型,直到您将文档视为文件,然后它应该可以工作。

关于cocoa - NSMetadataQuery 将文档移动到 iCloud 后找不到文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21233039/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com