如何给NSMutableArray排序

本文介绍如何在Objective-C中为Person类对象实现生日排序功能,通过三种方法实现:直接在对象内增加比较方法、使用NSSortDescriptor和Blocks。详细解释了每种方法的实现步骤和代码示例。
方法一:在数组的对象里增加比较方法,例如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];
}];

转载于:https://www.cnblogs.com/liuxingzi/archive/2012/11/20/3404270.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值