NSMetadataQuery 返回显然不存在的文件
Posted
技术标签:
【中文标题】NSMetadataQuery 返回显然不存在的文件【英文标题】:NSMetadataQuery returns files which apparently don't exist 【发布时间】:2015-06-02 21:49:19 【问题描述】:我最近开始将 iCloud 功能集成到应用程序中。我有 2 个测试电子表格,它们在通过我的应用程序上传到 iCloud 时可以正常工作(用于测试目的)。现在,当我将更多电子表格放入现在出现在 Mac 的 Finder 窗口中的相应 iCloud 应用程序文件夹中时,应用程序会将这些文件视为隐藏且无法读取。
谁能告诉我为什么这些文件被保存为隐藏文件?我怎样才能防止这种情况发生。我的应用需要能够从我的任何 Apple 设备(或使用 iCloud for Windows 软件的 Windows)读取放置在 iCloud 应用程序文件夹中的 CSV 文件。
【问题讨论】:
【参考方案1】:在没有得到 Apple 文档的帮助后,我设法找到了一些论坛来解释这些隐藏文件意味着它还没有被下载。我猜首先下载文件的元数据以显示它们存在,但只有在请求时才会实际下载文件。
在我的代码中,如果文件被隐藏,我只需拨打电话即可开始下载:
bool downloading = [[NSFileManager defaultManager] startDownloadingUbiquitousItemAtURL:[result valueForAttribute:NSMetadataItemURLKey] error:&error];
这将开始下载 NSMetadataQuery 返回的文件,如果启动成功,将返回一个布尔值。此时我只是弹出一个警报,让用户知道它的下载并在几秒钟后重试(小文件,所以一般只需要几个)。将来我可能会尝试实现下载进度或等待屏幕,但现在它可以完成这项工作。
【讨论】:
以上是关于NSMetadataQuery 返回显然不存在的文件的主要内容,如果未能解决你的问题,请参考以下文章
NSMetadataQuery 结果中未包含 iCloud Drive 文档
禁用 iCloud 时是不是可以使用 NSMetadataQuery?