gpt4 book ai didi

ios - 按日期用字典对数组进行排序

转载 作者:行者123 更新时间:2023-11-28 19:48:18 25 4
gpt4 key购买 nike

我有一个 NSArray,里面有 NSDictionary。看起来像:

original array

等等

我需要在 NSDictionary 中按日期对其进行排序。我需要这样的东西:

final array

我该怎么做?这是我的方法,它为我提供了第一个未排序的数组:

- (void)iterateOverDocumentsDirectory
{
arrayWithFiles = [NSMutableArray new];

NSFileManager *fileManager = [[NSFileManager alloc] init];
NSError *error;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirPath = [paths objectAtIndex:0];

NSString *finalPathToFolder = [NSString stringWithFormat:@"%@/", documentsDirPath];

albumNames = [[fileManager contentsOfDirectoryAtPath:finalPathToFolder error:&error] mutableCopy];
if (albumNames == nil) {
// error...
}

for (NSString *album in albumNames)
{
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
[tempDict setValue:album forKey:@"name"];

NSString *finalPathToFiles = [NSString stringWithFormat:@"%@/%@", documentsDirPath, album];

NSArray *tempArray = [fileManager contentsOfDirectoryAtPath:finalPathToFiles error:&error];

NSMutableArray *arrayWithEachFiles = [NSMutableArray new];
for (NSString *tempString in tempArray)
{
NSMutableDictionary *eachFileDict = [[NSMutableDictionary alloc] init];
NSString *pathToFile = [NSString stringWithFormat:@"%@/%@/%@", documentsDirPath, album, tempString];

[eachFileDict setValue:pathToFile forKey:@"path"];

NSDictionary *filePathsArray1 = [[NSFileManager defaultManager] attributesOfItemAtPath:pathToFile error:nil];
NSDate *modifiedDate = [filePathsArray1 objectForKey:NSFileCreationDate];

[eachFileDict setValue:modifiedDate forKey:@"date"];

[arrayWithEachFiles addObject:eachFileDict];
}

NSSortDescriptor *ageDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSArray *sortDescriptors = @[ageDescriptor];
NSArray *sortedArrayWithFiles = [[arrayWithEachFiles sortedArrayUsingDescriptors:sortDescriptors] mutableCopy];

[tempDict setValue:sortedArrayWithFiles forKey:@"files"];

[arrayWithFiles addObject:tempDict];
}
}

最佳答案

使用以下代码对字典数组进行排序:

NSArray * sortedArray = [myArray sortedArrayUsingComparator:^(id obj1, id obj2) {
NSNumber *rating1 = [(NSDictionary *)obj1 objectForKey:@"date"];
NSNumber *rating2 = [(NSDictionary *)obj2 objectForKey:@"date"];
return [rating1 compare:rating2];
}];

关于ios - 按日期用字典对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com