6

我正在使用UIManagedDocuments 来管理我在 iCloud 中的文件。设置后NSMetadataQuery像这样:

iCloudQuery = [[NSMetadataQuery alloc] init];
[iCloudQuery setSearchScopes:
    [NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
[iCloudQuery setPredicate:
    [NSPredicate predicateWithFormat:@"%K like %@", NSMetadataItemFSNameKey, @"DocumentMetadata.plist"]];

我遇到了一个奇怪的问题 - 当我的文档被命名时没有文件扩展名(例如@"NewDocument2")或公共扩展名(例如 ).txt时,元数据查询会正确找到DocumentMetadata.plist文件。但是,当使用我的自定义文件扩展名时,查询永远不会找到任何东西......不是在查询开始时,也不是在我添加新文档时。

在我看来,查询可能正在查看我的文档及其自定义文件扩展名,并没有意识到它实际上是一个目录(无论如何是一个文件包),因此不会在内部查找DocumentMetadata.plist文件。但是,我已经在应用程序的info.plist.

也许我错误地宣布了我的尿路感染?我在创建它时遵循了 Apple 的指南(在基于文档的 iOS 应用程序编程指南统一类型标识符概述中),但似乎出了点问题。


编辑:在“导出的 UTI”下info.plist,我的类型设置为符合“com.apple.package”。


编辑: 我仍在努力解决这个问题。我现在正在通过不使用文件扩展名来解决它。

使用自定义文件扩展名时,我在处理iCloud元数据查询结果,DocumentMetadata.plist文件肯定在文件包里面,但是元数据查询看不到。枚举查询结果时,将以下内容打印到日志中:

<iCloud Container URL>/Documents/
<iCloud Container URL>/Documents/New%20Document.spdoc/
<iCloud Container URL>/Documents/New%20Document.spdoc/DocumentMetadata.plist
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>%202)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/(A%20Document%20Being%20Saved%20By%20<AppName>)/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/.persistentStore_SUPPORT/_EXTERNAL_DATA/
<iCloud Container URL>/Documents/New%20Document.spdoc/StoreContent.nosync/persistentStore

(“CoreDataLogs”目录中还有一堆文件,但为简洁起见,我没有在这里展示它们)。

我只能认为这个问题与错误地创建我的文件包UTI有关。有没有其他人成功使用 iCloud 的自定义文件包?这是一个错误吗?

4

2 回答 2

3

这是设计使然。

API 也适用于 Spotlight。它不应该归结为包文档,因为这些文档的内容基本上是私有的。使用 iCloud,这并没有多大意义,但我怀疑他们不会改变它。根据使用的位置,API 以两种不同的方式工作是没有意义的。

我想这是一件历史性的事情——在 Mac 上你可以实现一个 Spotlight 导入器来处理你的自定义文档类型。在 iOS 上,我认为这还不可能(如果我错了,请纠正我)。所以现在,你只需要解决 API 的这个“特性”。

您可以改为搜索文档,然后从那里获取元数据。否则,像您所做的那样链接扩展应该可以工作。

于 2012-05-02T15:36:23.090 回答
1

升级到 iOS 5.1 beta 3 或更新版本。我不相信 UIManagedDocument + iCloud 在 iOS 5.0 中根本不起作用。

于 2012-02-16T19:22:33.577 回答