我有以下包含其他数组的数组。
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)。
感谢
答案 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]];
}];