我从iCloud获取数组中的文件列表,我希望这些文件按照NSMetadataItemFSCreationDateKey
或NSMetadataItemFSContentChangeDateKey
排序。但它没有按照给定的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];
}
感谢。
答案 0 :(得分:1)
我相信NSMetadataItemFSCreationDateKey
总是返回nil,see this,所以甚至不要尝试对其进行排序。
现在,我不按NSMetadataItemFSContentChangeDateKey
排序,虽然我使用valueForAttribute查询它:当查询结果通过时,从NSMetadataItem查询它,并且在那时工作正常。因此,请专注于NSMetadataItemFSContentChangeDateKey
。
如果您无法通过排序获得查询结果,一种可能的方法是在之后对结果进行排序 - 当您处理查询结果时。当我过去有一个不寻常的排序要求时,我已经习惯了。