sorting字典数组
嗨,我有一个以下的字典数组,我想要使用关键字“BirthDate”sorting数组,我的代码如下
NSLog(@"nodeEventArray == %@", temp); NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"BirthDate" ascending:YES]; NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor]; NSArray *sortedEventArray = [temp sortedArrayUsingDescriptors:sortDescriptors]; NSLog(@"sortedEventArray == %@", sortedEventArray);
但我无法正确sorting任何人可以请告诉我如何sorting基于“BirthDate”键的字典数组。自出生date即将作为服务string
样本数组字典:
nodeEventArray = ( { BirthDate = "05/04/1986"; Email = ""; FirstName = Test; IsSpouse = 0; LastName = Test; MiddleInitial = ""; PatientID = ""; Phone = ""; ScacntronCSVId = 40409; SlotID = 1; UserName = "Tes_02192013010055"; }, { BirthDate = "02/14/1986"; Email = ""; FirstName = Guest; IsSpouse = 0; LastName = Guest; MiddleInitial = ""; PatientID = ""; Phone = ""; ScacntronCSVId = 40410; SlotID = 2; UserName = "Gue_02192013014725"; }, { BirthDate = "02/17/1987"; Email = ""; FirstName = User; IsSpouse = 0; LastName = User; MiddleInitial = ""; PatientID = ""; Phone = ""; ScacntronCSVId = 40411; SlotID = 3; UserName = "Use_02192013020726"; } )
您可以使用比较器来代替使用sortDescriptor
NSArray *sortedArray = [nodeEventArray sortedArrayUsingComparator: ^(id obj1, id obj2) { NSDateFormatter *dateFormator = [[NSDateFormatter alloc] init]; NSDate *date1 = [dateFormator dateFromString:[[obj1 objectForKey:@"BirthDate"] stringByReplacingOccurrencesOfString:[[obj1 objectForKey:@"BirthDate"] lastPathComponent] withString:@"2013"]]; NSDate *date2 = [dateFormator dateFromString:[[obj1 objectForKey:@"BirthDate"] stringByReplacingOccurrencesOfString:[[obj1 objectForKey:@"BirthDate"] lastPathComponent] withString:@"2013"]]; if ([date1 earlierDate:date2] == date1) { return (NSComparisonResult)NSOrderedDescending; }else{ return (NSComparisonResult)NSOrderedAscending; } }];
我假设该数组来自服务器或某些东西(因此“用户名”位),但仍然是,最好将每个用户/事件/无论存储在一个NSDate对象。 这样,你可以按datesorting,它的工作原理。
但是,如果你想sorting这个数组,然后…
如果你想按BirthDatesorting(使用date),那么你需要将string转换为实际的NSDates。
NSDateFormatter *df = [[NSDateFormatter alloc] init]; df.dateFormat = @"MM/dd/yyyy"; [blah sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) { NSDate *date1 = [df dateFromString:[obj1 objectForKey:@"BirthDate"]; NSDate *date2 = [df dateFromString:[obj2 objectForKey:@"BirthDate"]; return [date1 compare:date2]; }];
这应该做到这一点。
它会将string转换成date,然后比较它们。
- AFNetworking是否有后台支持?
- 为什么在启动我的iPhone OS应用程序时遇到“安全策略错误”?
- 应用程序被拒绝 – 苹果公司希望我添加额外的本机iOSfunction
- UIPopoverController:当popover仍然可见时,达到了dealloc
- 显示可重用单元格中的下载进度
- 在XCode 4中使用Google Analytics libbuild立项目的问题
- parsingSwift IOS – PFCloud callFunctionInBackgroundselect器未被调用
- 如何在Objective-C中使用startMonitoringForRegion扫描多个区域
- Criando uma Pokedex com Swift零件:3/3