冒泡排序NSMutableArray

时间:2013-04-28 21:16:01

标签: objective-c nsmutablearray nsarray nsdictionary

我已经使用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];

    }];

这会生成我给你的第一个排序示例,我希望通过一些帮助对它进行排序,以便将具有相同开始日期的任何内容按顺序排序。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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);

感谢大家帮助我。