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 ?
Réponses
Trop de publicités?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);
}
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.