Comment puis-je sortinger un résultat icloud NSMetadataQuery de UIDocument par date de modification?

J'ai une application iOS qui utilise un model UIDocument simple avec un seul champ de contenu pour le stockage iCloud. Je récupère la list des documents pour peupler un UITableView en utilisant un NSMetadataQuery. Je souhaite que les nouveaux documents apparaissent en haut de cette table, mais le sorting par défaut semble être ancien -> nouveau.

Je sais que si j'avais un champ de date personnalisé dans le document, je pourrais sortinger la requête avec le NSSortDescriptor sur ce champ mais ma question est est-il possible de sortinger par la date de modification insortingnsèque du file créé via le stockage UIDocument iCloud? Ou y a-t-il une autre méthode préférée pour le faire?

On dirait que la bonne façon de le faire serait de définir le descripteur de sorting de votre requête lorsque vous le créez. Quelque chose dans ce sens:

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]; 

Gist: Que diriez-vous d'appeler -[NSURL getResourceValue:forKey:error:] et de passer dans le NSURLContentModificationDateKey , puis de faire un sorting décroissant sur les valeurs NSDate returnnées.

Détails: Vous pouvez soit passer un comparateur à -[NSMutableArray sortUsingComparator:] qui récupère le NSDate requirejs pour chaque object à la volée, soit les récupérer tous dans un nouveau tableau avec un NSDate, id composé NSDate, id object NSDate, id , et sortinger le tableau de cette object, puis extraire les references d' id quand fait le sorting (l'idiome de python decorate-sort-undecorate).