如何从ios中的应用程序文件夹按datesortinguiimages

如何通过从图库中sortingdate修改types来显示图像。 我可以从文件夹中使用数据

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSFileManager *manager = [NSFileManager defaultManager]; 

另外如何比较uiimage修改date。

提前致谢….

最简单的方法:

 - (void)images { //---Get directory from app folder NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSFileManager *manager = [NSFileManager defaultManager]; NSArray *imageFilenames = [manager contentsOfDirectoryAtPath:documentsDirectory error:nil]; NSMutableArray *originalImage = [[NSMutableArray alloc]init]; for (int i = 1; i < [imageFilenames count]; i++) { NSString *imageName = [NSString stringWithFormat:@"%@/%@",documentsDirectory,[imageFilenames objectAtIndex:i] ]; UIImage *image = [UIImage imageWithContentsOfFile:imageName]; [originalImage addObject:image]; } NSLog(@"\n\n\n Original images %@",originalImage); //---------sorting image by date modified NSArray* filelist_date_sorted; filelist_date_sorted = [imageFilenames sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSDictionary* first_properties = [[NSFileManager defaultManager] attributesOfItemAtPath:[NSString stringWithFormat:@"%@/%@", documentsDirectory, obj1] error:nil]; NSDate *first = [first_properties objectForKey:NSFileModificationDate]; NSDictionary *second_properties = [[NSFileManager defaultManager] attributesOfItemAtPath:[NSString stringWithFormat:@"%@/%@", documentsDirectory, obj2] error:nil]; NSDate *second = [second_properties objectForKey:NSFileModificationDate]; return [second compare:first]; }]; NSLog(@"\n\n\n date images %@",filelist_date_sorted); NSMutableArray *sortedImage = [[NSMutableArray alloc]init]; //--- Store sorted images in array for (int i = 1; i < [imageFilenames count]; i++) { NSString *imageName = [NSString stringWithFormat:@"%@/%@",documentsDirectory,[filelist_date_sorted objectAtIndex:i] ]; UIImage *image = [UIImage imageWithContentsOfFile:imageName]; if(!(image==nil)) { [sortedImage addObject:image]; } } NSLog(@"\n\n\nsorted images %@",sortedImage); } 

为此,您必须使用ALAssetsLibrary枚举库中的所有图像。

从这里你可以获取每个图像的属性:

  • 图像文件名称。
  • 图片资源url

你的答案在这里

您可以使用ALAssetPropertyDate属性检索资产的创builddate:

  ALAsset* asset; //do anthing NSDate* date = [asset valueForProperty:ALAssetPropertyDate]; 

可能会帮助你。

您可以使用此代码获取图像的属性

 NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:@"path/to/my/file" error:nil]; 

您可以使用此代码获取修改date

 NSDate *date = [attributes fileModificationDate]; 

创buildNSMutableDictionary并将修改date作为键和path作为值。

 NSMutableDictionary *imagesDict = [[NSMutableDictionary alloc] init]; for(NSString *path in paths) { NSDictionary *attributes = [[NSFileManager defaultManager] ; NSDate *date = [attributes fileModificationDate]; imagesDict[date] = path; // key - date , value - path } 

然后你可以对imagesDict的键进行sorting

 NSArray *sortedDates = [[imagesDict allKeys] sortedArrayUsingSelector:@selector(compare:)]; 

然后你可以为sortedDates项目制作循环,并按date修改你的图像

 for(NSDate *newDate in sortedDates) { NSString newPath = imagesDict[newDate]; } 

另一个scheme

 -(NSArray *)orderedFileListByModificationDate{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *dirPath = [paths objectAtIndex:0]; dirPath=[dirPath stringByAppendingString:@"/imgs"]; NSFileManager *fileManager=[[NSFileManager alloc] init]; NSDateFormatter *formatter=[[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"]; int filesCount; NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dirPath error:NULL]; int dirFilesCount=(int)[directoryContent count]; NSMutableArray *fileObjects=[NSMutableArray array]; for (filesCount = 0; filesCount < dirFilesCount; filesCount++) { NSString *fileName=[directoryContent objectAtIndex:filesCount]; NSString *filePath =[NSString stringWithFormat:@"%@/%@",dirPath,fileName]; NSDictionary *fileAttributes=[fileManager attributesOfItemAtPath:filePath error:nil]; NSDate *dateModiftication=[fileAttributes valueForKey:@"NSFileModificationDate"]; NSMutableDictionary *datesAndFilesDict=[[NSMutableDictionary alloc] initWithCapacity:2]; [datesAndFilesDict setValue:fileName forKey:@"fileName"]; [datesAndFilesDict setValue:dateModiftication forKey:@"date"]; [fileObjects addObject:datesAndFilesDict]; } NSLog(@"%@",fileObjects); NSArray *newOrderedFileList = [fileObjects sortedArrayUsingComparator: ^(id obj1, id obj2) { NSDate *dateOne=[(NSDictionary*)obj1 valueForKey:@"date"]; NSDate *dateTwo=[(NSDictionary*)obj2 valueForKey:@"date"]; NSComparisonResult result=[dateOne compare:dateTwo]; return result; }]; NSLog(@"%@",newOrderedFileList); //Now you've an array of dictionaries where you can pick the filename with the "fileName" key. return newOrderedFileList; }