3 votes

IOS - charger un fichier local dans l'ordre

J'ai une liste d'images dans le dossier Document de l'application. Et je veux charger les images dans l'ordre de leur date de création. Comment puis-je faire cela ?

5voto

dasblinkenlight Points 264350

Ce code énumérera tous les fichiers de votre répertoire de documents dans l'ordre où ils ont été créés :

Consultez les commentaires dans le code pour comprendre ce qui se passe.

NSFileManager *fm = [NSFileManager defaultManager];
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSError *err;
// Obtenir tous les fichiers avec leur date de création
NSArray *files = [fm contentsOfDirectoryAtURL:[[NSURL alloc] initFileURLWithPath:doc isDirectory:YES]
    includingPropertiesForKeys:[NSArray arrayWithObject:NSURLCreationDateKey]
    options:0
    error:&err];
// Utiliser l'URL du fichier comme clé, stocker la date de création comme valeur
NSMutableDictionary *urlWithDate = [NSMutableDictionary dictionaryWithCapacity:files.count];
for (NSURL *f in files) {
    NSDate *creationDate;
    if ([f getResourceValue:&creationDate forKey:NSURLCreationDateKey error:&err]) {
        [urlWithDate setObject:creationDate forKey:f];
    }
}
// Trier le dictionnaire sur la valeur, qui est la clé de création
for (NSURL *f in [urlWithDate keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [obj1 compare:obj2];
}]) {
    // Vérifier si le fichier est une image. Charger s'il s'agit d'une image, sinon passer.
    NSLog(@"%@", f);
}

1voto

James Paolantonio Points 2174

Je jetterais un coup d'œil: Obtenir une liste de fichiers dans un répertoire avec un glob

En particulier le NSFileManager. Vous pouvez regarder les attributs du fichier. De là, vous pouvez probablement faire un tri en utilisant NSPredicate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X