如何对NSArray的元素进行排序?

时间:2011-08-24 13:37:47

标签: objective-c ios

我有以下包含其他数组的数组。

NSArray *results = [[NSArray alloc] initWithObjects:
[NSArray arrayWithObjects:@"Nickname1", [NSNumber numberWithBool:YES], nil],
[NSArray arrayWithObjects:@"Nickname2", [NSNumber numberWithBool:NO], nil],
[NSArray arrayWithObjects:@"Nickname3", [NSNumber numberWithBool:YES], nil],
[NSArray arrayWithObjects:@"Nickname4", [NSNumber numberWithBool:YES], nil],
nil ];

如何通过第二个参数(布尔值)对此数组的元素进行排序。我可以使用NSSortDescriptor吗? (我希望之前都是YES)。

感谢

1 个答案:

答案 0 :(得分:4)

您可以使用sortedArrayUsingComparator方法。由于您希望在YES值(常量值为0)之前排序的NO值(值为1的常量),只需反转compare:调用中对象的顺序。

NSArray *sortedArray = [results sortedArrayUsingComparator:^(id o1, id o2) {
    NSArray *ary1 = (NSArray *)o1;
    NSArray *ary2 = (NSArray *)o2;

    return [[ary2 objectAtIndex:1] compare:[ary1 objectAtIndex:1]];
}];