Сортировка файлов по дате создания - iOS - PullRequest
6 голосов
/ 02 ноября 2011

Я пытаюсь получить все файлы в каталоге i и отсортировать их по дате создания или дате изменения. Существует множество примеров, но я не могу заставить никого из них работать.

У кого-нибудь есть хороший пример, как получить массив файлов из каталога, отсортированного по дате?

1 Ответ

5 голосов
/ 22 февраля 2014

Здесь есть два шага: получить список файлов с датами их создания и отсортировать их.

Чтобы упростить их сортировку позже, я создаю объект, содержащий путь с егодата изменения:

@interface PathWithModDate : NSObject
@property (strong) NSString *path;
@property (strong) NSDate *modDate;
@end

@implementation PathWithModDate
@end

Теперь, чтобы получить список файлов и папок (не глубокий поиск), используйте это:

- (NSArray*)getFilesAtPathSortedByModificationDate:(NSString*)folderPath {
    NSArray *allPaths = [NSFileManager.defaultManager contentsOfDirectoryAtPath:folderPath error:nil];

    NSMutableArray *sortedPaths = [NSMutableArray new];
    for (NSString *path in allPaths) {
        NSString *fullPath = [folderPath stringByAppendingPathComponent:path];

        NSDictionary *attr = [NSFileManager.defaultManager attributesOfItemAtPath:fullPath error:nil];
        NSDate *modDate = [attr objectForKey:NSFileModificationDate];

        PathWithModDate *pathWithDate = [[PathWithModDate alloc] init];
        pathWithDate.path = fullPath;
        pathWithDate.modDate = modDate;
        [sortedPaths addObject:pathWithDate];
    }

    [sortedPaths sortUsingComparator:^(PathWithModDate *path1, PathWithModDate *path2) {
        // Descending (most recently modified first)
        return [path2.modDate compare:path1.modDate];
    }];

    return sortedPaths;
}

Обратите внимание, что как только я создаю массив PathWithDateобъекты, я использую sortUsingComparator, чтобы расположить их в правильном порядке (я выбрал по убыванию).Чтобы вместо этого использовать дату создания, используйте [attr objectForKey:NSFileCreationDate].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...