Intereting Posts
Как получить свойства по имени? Если у меня есть `@" цвет "`, как мне получить `self.color`? AVAudioPlayer не будет воспроизводить звук при вызове в другом быстром файле Ошибка при разборе NSDate из NSString NSDateFormatter и стандартная локализация вызывают ошибку Каково название представления, которое показывает такие параметры, как Camera Roll? Место расположения позвоночника (по 2 страницы за раз) в стиле прокрутки UIPageViewController Функция Calendar.current.nextDate в Swift Как добавить модальный вид на текущий контроллер? Структура MVC с Parse Предпочтительный подход со значениями int при добавлении 64-битной поддержки приложения iOS Объединение панелей вкладок, навигации и просмотра таблиц когда я использую строку #include <OpenGL / gl.h> в моем проекте xcode, где он ищет файл gl.h? Почему у шаблона Xcode нет контента? AVAuthorizationStatusNotDetermined на iOS Simulator Как создать карту на месте пользователя IOS 9 SWIFT

Как отсортировать файл из каталога документов, создав дату в iOS?

У меня есть NSMutableArray который извлекал файл из каталога документов в iOS.

Я извлек файлы из каталога документов со следующими кодами.

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSError * error; self.array = [[NSMutableArray alloc] init]; self.array = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error]; 

И затем я показываю списки файлов в UITableView . Однако это показано в алфавитном порядке.

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

редактировать

Вот я пишу в ViewWillAppear .

 - (void)viewWillAppear:(BOOL)animated { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSError * error; self.array = [[NSMutableArray alloc] init]; self.array = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error]; [self loadData]; } - (void) loadData { self.sortedFileList = [self.array mutableCopy]; [self.sortedFileList sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSDate* d1 = [[NSFileManager defaultManager] attributesOfFileSystemForPath:obj1 error:nil][@"fileCreationDate"]; NSDate* d2 = [[NSFileManager defaultManager] attributesOfFileSystemForPath:obj2 error:nil][@"fileCreationDate"]; return [d1 compare:d2]; }]; } 

И это не сортировать по дате.

Как я могу это сделать?

Спасибо за любые предложения и помощь.

Нам нужно, чтобы NSFileManager получал атрибуты ( attributesOfItemAtPath:error: NSFileManager для каждого файла. Это возвращает словарь для файла, и вы можете получить дату создания с помощью fileCreationDate . Затем вы можете выполнить сортировку.

Одна вещь, которую вы можете сделать, это хранить NSDictionary в качестве Key и CreationDate как Value в некоторых NSDictionary а затем вы можете использовать …

 myArray = [myDict keysSortedByValueUsingComparator: ^NSComparisonResult(id obj1, id obj2){ return [[obj2 date] compare:[obj1 date]]; }]; 

Один из способов – использовать метод sortUsingComparator: в изменяемом массиве, например (псевдокод):

 @property (nonatomic,retain) NSMutableArray* sortedFileList; .... // Make sure to call this method *once* (ie from your VC when loading view). - (void) loadData { self.sortedFileList = [self.array mutableCopy]; [a sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSDate* d1 = [[NSFileManager defaultManager] attributesOfItemAtPath:obj1 error:nil][@"fileCreationDate"]; NSDate* d2 = [[NSFileManager defaultManager] attributesOfItemAtPath:obj2 error:nil][@"fileCreationDate"]; return [d1 compare:d2]; }]; } - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.sortedFileList.count; } - (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell* cell = // dequeue cell or create one cell.textLabel.text = [[[NSString stringWithFormat:@"%@",[self.sortedFileList objectAtIndex:indexPath.row]] lastPathComponent] stringByDeletingPathExtension]; }