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

Objective c 如何对NSArray的元素进行排序?,objective-c,ios,Objective C,Ios,下面的数组包含其他数组 NSArray *results = [[NSArray alloc] initWithObjects: [NSArray arrayWithObjects:@"Nickname1", [NSNumber numberWithBool:YES], nil], [NSArray arrayWithObjects:@"Nickname2", [NSNumber numberWithBool:NO], nil], [NSArray arrayWithObjects:@"Nick

下面的数组包含其他数组

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吗?(我要所有的答案都是肯定的)


谢谢

您可以使用
sortedarrayingcomparator
方法进行此操作。由于希望将
YES
值(值为1的常量)排序在
NO
值(常量值为0)之前,因此只需颠倒
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]];
}];

您可以使用
sortedarrayingcomparator
方法进行此操作。由于希望将
YES
值(值为1的常量)排序在
NO
值(常量值为0)之前,因此只需颠倒
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]];
}];