iCloud - NSMetadataQuery不使用NSMetadataItemFSCreationDateKey进行排序

时间:2013-11-30 06:51:08

标签: ios iphone sorting icloud nsmetadataquery

我从iCloud获取数组中的文件列表,我希望这些文件按照NSMetadataItemFSCreationDateKeyNSMetadataItemFSContentChangeDateKey排序。但它没有按照给定的NSSortDescriptor返回。

这是我的代码,如果有任何遗漏或我需要添加任何内容,请建议我。

-(void)getiCloudData
{

[appdel.metadataQuery setSearchScopes:[NSArray arrayWithObjects: NSMetadataQueryUbiquitousDocumentsScope,NSMetadataQueryUbiquitousDataScope ,nil]];
[appdel.metadataQuery setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE '*'", NSMetadataItemFSNameKey]];

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSCreationDateKey
                             ascending:FALSE] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObjects:
                            sortDescriptor,
                            nil];
[appdel.metadataQuery setSortDescriptors:sortDescriptors];

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(queryDidReceiveNotification:)
                                         name:NSMetadataQueryDidFinishGatheringNotification
                                       object:appdel.metadataQuery];
[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(updatequeryDidReceiveNotification:)
                                         name:NSMetadataQueryDidUpdateNotification
                                       object:appdel.metadataQuery];
   [appdel.metadataQuery enableUpdates];
   [appdel.metadataQuery startQuery];
}

感谢。

1 个答案:

答案 0 :(得分:1)

我相信NSMetadataItemFSCreationDateKey总是返回nil,see this,所以甚至不要尝试对其进行排序。

现在,我不按NSMetadataItemFSContentChangeDateKey排序,虽然我使用valueForAttribute查询它:当查询结果通过时,从NSMetadataItem查询它,并且在那时工作正常。因此,请专注于NSMetadataItemFSContentChangeDateKey

如果您无法通过排序获得查询结果,一种可能的方法是在之后对结果进行排序 - 当您处理查询结果时。当我过去有一个不寻常的排序要求时,我已经习惯了。