2011-08-24 58 views
0

我有以下數組包含其他數組。如何對此NSArray的元素進行排序?

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嗎? (我希望以前都是)。

感謝

回答

4

您可以使用此方法sortedArrayUsingComparator。由於您希望NO值(恆定值爲0)之前的YES值(常量值爲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]]; 
}]; 
相關問題