NSMetadataQuery忽略自定义文件包types

我正在使用UIManagedDocument来pipe理我在iCloud中的文件。 设置NSMetadataQuery之后, NSMetadataQuery所示:

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

我遇到一个奇怪的问题 – 当我的文档没有文件扩展名(例如@"NewDocument2" )或一个像.txt这样的公共扩展名时,元数据查询正确地findDocumentMetadata.plist文件。 但是,当使用我的自定义文件扩展名时,查询从来没有发现任何东西…不是当查询开始时,也不是当我添加一个新的文档。

在我看来,查询可能是看到我的文件与自定义的文件扩展名,并没有意识到,它实际上,是一个目录 (无论如何一个文件包),所以不看里面findDocumentMetadata.plist文件。 不过,我已经在应用程序的info.plist声明了我的自定义UTI。

也许我错误地宣布了我的UTI? 我遵循苹果的指导方针(在“ 基于文档的iOS应用程序编程指南”和“ 统一types标识符概述”中 )创build它,但似乎有些问题。


编辑:info.plist中的“导出的UTI”下,我的types被设置为符合“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”目录中还有一堆文件,但是为了简洁,我没有在这里显示它们)。

我只能认为这个问题是不正确地创build我的文件包UTI。 有没有人成功地使用iCloud的自定义文件包? 这是一个错误?

这是devise。

API也适用于Spotlight。 因为这些文件的内容基本上是私人的,所以不应该下载到包装文件中。 使用iCloud,这并没有什么意义,但我怀疑他们不会改变它。 根据API的使用位置,API以两种不同的方式工作是没有意义的。

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

您可以search文档,然后从那里获取元数据。 否则,如你所做的那样链接扩展应该工作。

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