我有一个iOS应用程序,它使用一个简单的UIDocument模型和一个内容字段用于iCloud存储.我检索文档列表以使用NSMetadataQuery填充UITableView.我希望在此表的顶部显示新文档,但默认排序似乎是旧的 – >新.
我知道如果我在文档中有自定义日期字段,我可以在该字段上使用NSSortDescriptor对查询进行排序,但我的问题是是否可以按照通过UIDocument iCloud存储创建的文件的内在修改日期进行排序?或者还有另一种首选方法吗?
解决方法
看起来正确的方法是在创建查询时设置查询的排序描述符.这些方面的东西:
NSMetadataQuery *query = [[NSMetadataQuery alloc] init]; [query setSearchScopes:[NSArray arrayWithObject: NSMetadataQueryUbiquitousDocumentsScope]]; NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K ENDSWITH '.bin'",NSMetadataItemFSNameKey]; [query setPredicate:pred]; NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSContentChangeDateKey ascending:FALSE] autorelease]; //means recent first NSArray *sortDescriptors = [NSArray arrayWithObjects: sortDescriptor,nil]; [query setSortDescriptors:sortDescriptors]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:query]; [query startQuery];