如何给NSMutableArray排序

方法一:在数组的对象里增加比较方法,例如Person类型的数组,想按生日来排序,那么首先在Person类里增加下面的方法,注意返回值的类型。

- (NSComparisonResult)compare:(Person *)otherObject 
{ 
return [self.birthDate compare:otherObject.birthDate]; 
}
当需要对这个数组进行排序时,写下面的代码:
NSArray *sortedArray; 
sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];

方法二:NSSortDescriptor (较好)

首先定义一个比较器,规定按birthDate字段来排序
NSSortDescriptor *sortDescriptor; 
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"birthDate" ascending:YES] autorelease]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
NSArray *sortedArray; 
sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];

方法三:Blocks (最好)

10.6以后,可以使用代码段的方法。
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingComparator:^NSComparisonResult(id a, id b)
{ NSDate *first = [(Person*)a birthDate];
 NSDate *second = [(Person*)b birthDate];
 return [first compare:second];
}];

posted on 2012-11-20 18:17  流れ星ーー  阅读(172)  评论(0编辑  收藏  举报

导航