我已经使用NSArray函数 sortedArrayUsingComparator 来帮助我对NSDictionaries的NSMutableArray进行排序。但是,我想要排序的数组不仅仅基于一个值。
有两个值是startdate和finishdate,目前我只是按startdate排序所以我的数组显示为已排序,直到你看到enddate并看到它们是不正确的。
当前格式。
(start / end)
0 / 1996
0 / 1991
1992 / 1995
1993 / 1999
1993 / 1991
实际上我想实现这样的目标
(start / end)
0 / 1991
0 / 1996
1992 / 1995
1993 / 1991
1993 / 1999
这是我目前的代码
// try sorting years
NSString const * myStartDate = @"DATESTART";
NSString const * myEndDate = @"DATEEND";
NSArray *sortedArray = [resultantArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDictionary *dictA = a;
NSDictionary *dictB = b;
NSNumber *startDate1 = dictA[myStartDate];
NSNumber *startDate2 = dictB[myStartDate];
return [startDate1 compare:startDate2];
}];
这会生成我给你的第一个排序示例,我希望通过一些帮助对它进行排序,以便将具有相同开始日期的任何内容按顺序排序。
非常感谢任何帮助。
答案 0 :(得分:0)
当我第一次尝试弄清楚如何使用数组内部的NSDictionarys的两个元素对NSMutableArray进行排序时,我不理解NSSortDescriptors,所以我忽略了这里给出的例子
对于我的特定问题清单2 是完美的解决方案..所以我为自己编写代码并且它工作得很好!!!!
这是我的解决方案。
NSSortDescriptor *yearStartDesc = [[NSSortDescriptor alloc] initWithKey:@"YEARSTART" ascending:YES];
NSSortDescriptor *yearEndDesc = [[NSSortDescriptor alloc] initWithKey:@"YEARFINISH" ascending:YES];
NSArray *sortDescriptors = @[yearStartDesc, yearEndDesc];
NSArray *newSortedArray = [unsortedArray sortedArrayUsingDescriptors:sortDescriptors];
NSLog(@"%@", newSortedArray);
感谢大家帮助我。