0

我已经设法使用 NSArray 函数sortedArrayUsingComparator对我的 NSMutableArray 的 NSDictionaries 进行排序但是我想要排序的数组不仅仅是基于一个值。

有两个值 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];

    }];

这产生了我给你的第一个排序示例,我希望得到一点帮助的是对它进行排序,以便对具有相同开始日期和结束日期的任何内容进行排序。

任何帮助将不胜感激。

4

1 回答 1

0

当我第一次尝试弄清楚如何使用数组中 NSDictionarys 的两个元素对 NSMutableArray 进行排序时,我不理解 NSSortDescriptors 所以我忽略了这里给出的示例

https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/SortDescriptors/Articles/Creating.html#//apple_ref/doc/uid/20001845-BAJEAIEE

对于我的特殊问题,清单 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);

只想感谢大家帮助我。

于 2013-04-28T23:00:30.567 回答