Intereting Posts
Путь Xcode к заголовку префикса – новая цель Отладчик Xcode дает мне <????> (вопросительные знаки). Что я делаю? Как реализовать uitableviewcell, стоимость которого получена из другой uitableviewcell Панель поиска и контроллер отображения без просмотра таблицы EXC_BAD_ACCESS (код = 1) при вызове ManagedObjectContext save: & error] Значение текстового значения UITextField для Boolean EXC_BAD_ACCESS при настройке свойств свойства представления параметра Возможно ли разместить статическое изображение поверх webview в приложении Cordova Разбирайте данные JSON для маркировки Сценическая камера сверху вниз Кордоба push-плагин уведомления Objective C – UIAlertView после входа в систему, чтобы ввести идентификатор электронной почты, если идентификатор электронной почты равен null для ios Как воспроизводить аудио из потокового видео в фоновом режиме iOS Swift iOS SDK Mutual Friends Facebook API v2.0 Создание заполнителя UITextView с разными цветами и шрифтами

Как отсортировать файл из каталога документов, создав дату в 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]; }