Tag: nsmetadataquery

如何通过修改date对UIDocument的icloud NSMetadataQuery结果进行sorting?

我有一个iOS应用程序,使用简单的UIDocument模型和iCloud存储的单个内容字段。 我检索文件的列表来填充使用NSMetadataQuery的UITableView。 我希望在这个表的顶部显示新的文档,但默认sorting看起来是旧的 – >新的。 我知道如果我在文档中有一个自定义date字段,我可以使用该字段上的NSSortDescriptor对查询进行sorting,但是我的问题是可以通过UIDocument iCloud存储创build的文件的固有修改date进行sorting吗? 还是有另一种首选的方法来做到这一点?

为什么连续多次调用NSMetadataQueryDidUpdateNotification?

为了监视我的iCloud容器中的文件更改,我已经注册 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processiCloudUpdates:) name:NSMetadataQueryDidUpdateNotification object:nil]; 理想情况下,每当我收到更新消息时,我想打开每个UIDocs并检查设置是否已更改。 如果NSMetadataQueryDidUpdateNotification只被调用一次,这将很好。 但是,它被激发了好几次(我没有忘记removeObserver等,有几个实例正在运行),因此,每次更新通知被触发时,加载所有文件是非常不切实际的(如果我有5个文件这被称为4次,我会连续打开20个UIDocs)。 例如,如果我更新一个文件(在我的无处不在的容器中只有一个文件),会发生这种情况: 2012-07-05 10:51:39.565 Meernotes[7842:707] … NSMetadataQuery update 2012-07-05 10:51:42.468 Meernotes[7842:707] … NSMetadataQuery update 2012-07-05 10:51:45.216 Meernotes[7842:707] … NSMetadataQuery update 2012-07-05 10:51:47.036 Meernotes[7842:707] … NSMetadataQuery update 有没有其他方法来确定文件何时更改? NSFileVersion也没有太大的帮助。

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 […]

NSMetaDataQuery永远不会callbackNSMetadataQueryDidFinishGatheringNotification

对于我正在写的iCloud插件,我订阅了我的iCloudpipe理器类到这些iCloud NSMetaDataQuery观察者: // Add a predicate for finding the documents NSString* filePattern = [NSString stringWithFormat:@"*.%@", @"*"]; self.metadataQuery = [[NSMetadataQuery alloc] init]; // Before starting to query, it is required to set the search scope. arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]]; // It is also required to set a search predicate. [self.metadataQuery setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE %@", NSMetadataItemFSNameKey, filePattern]]; // Listen for […]