NSMutableArray 中自定义对象的排序

1首先定义一个自定义类,如下
@interface BookItem : NSObject
{
NSInteger booKDataID;
NSString* bookName;
NSString* bookDescription;
NSString* bookFileName;
NSInteger bookFileSize;
NSString* recommendindex;
NSDate* modifyTime;
}
@property NSInteger booKDataID;
@property (nonatomic,retain) NSString* bookName;
@property (nonatomic,retain) NSString* bookDescription;
@property (nonatomic,retain) NSString* bookFileName;
@property NSInteger bookFileSize;
@property (nonatomic,retain) NSDate* modifyTime;
@end
目的:NSMutableArray中存储这个类的对象,根据booKDataID(数字), bookName(字符串), modifyTime(时间)来进行排序

 

2写一个方法,初始化类对象,假设如下
//初始化类对象
-(BookItem *)createbook:(NSInteger)bookid
{
BookItem *booktemp=[[BookItem alloc]init];
booktemp.booKDataID=bookid;
booktemp.bookName=[NSString stringWithFormat:@"book-%i",bookid];
booktemp.bookFileName=@"bookfile";
booktemp.bookDescription=@"bookDescription";
NSTimeInterval testtime=[[NSNumber numberWithInt:bookid] doubleValue];
booktemp.modifyTime=[[NSDate date] addTimeInterval:testtime];
return booktemp;
}
目的就是调用的时候根据bookid生成不同的对象

 

3给数组添加对象
-(void)reset
{
BookItem *booktest=[[BookItem alloc]init];
sourceArry =[[NSMutableArray alloc]init];
for (int i=10; i>0; i--) {
NSInteger temp=[[NSNumber numberWithInt:i] integerValue];
booktest=[self createbook:temp];
NSLog(@"%i,%@,%@,%@,%@",booktest.booKDataID,booktest.bookName,booktest.bookFileName,booktest.bookDescription,booktest.modifyTime);
[sourceArry addObject:booktest];
}
/*
for (BookItem *testbook in sourceArry) {
NSLog(@"%i,%@,%@,%@,%@",testbook.booKDataID,testbook.bookName,testbook.bookFileName,testbook.bookDescription,testbook.modifyTime);
}
NSLog(@"%i",[sourceArry count]);
*/
}

 

4将排序好的方法放到另一个mutablearry中
方法如下:
//数组排序 第一个变量为要排序的关键字 第二个变量为是否是升序
-(void)startArraySort:(NSString *)keystring isAscending:(BOOL)isAscending
{
//self.destinationArry=[[NSMutableArray alloc]init];
NSSortDescriptor* sortByA = [NSSortDescriptor sortDescriptorWithKey:keystring ascending:isAscending];
//[ self.sourceArry sortUsingDescriptors:[NSArray arrayWithObject:sortByA]];
//destinationArry 排序后的数组 sourceArry 源数据
self.destinationArry=[[NSMutableArray alloc]initWithArray:[self.sourceArry sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortByA]]];
for (BookItem *testbook in destinationArry) {
NSLog(@"%i,%@,%@,%@,%@",testbook.booKDataID,testbook.bookName,testbook.bookFileName,testbook.bookDescription,testbook.modifyTime);
}
}
同样,这里destinationArry也是一个声明的可变数组,如下:
@property (nonatomic,retain) NSMutableArray *destinationArry;

 

5使用booKDataID(数字),升序排序
[self startArraySort:@"booKDataID" isAscending:YES];
结果如下:
1,book-1,bookfile,bookDescription,2011-10-18 14:30:07 +0000
2,book-2,bookfile,bookDescription,2011-10-18 14:30:08 +0000
3,book-3,bookfile,bookDescription,2011-10-18 14:30:09 +0000
4,book-4,bookfile,bookDescription,2011-10-18 14:30:10 +0000
5,book-5,bookfile,bookDescription,2011-10-18 14:30:11 +0000
6,book-6,bookfile,bookDescription,2011-10-18 14:30:12 +0000
7,book-7,bookfile,bookDescription,2011-10-18 14:30:13 +0000
8,book-8,bookfile,bookDescription,2011-10-18 14:30:14 +0000
9,book-9,bookfile,bookDescription,2011-10-18 14:30:15 +0000
10,book-10,bookfile,bookDescription,2011-10-18 14:30:16 +0000

 

6使用bookName (字符串),升序排序
[self startArraySort:@"bookName" isAscending:YES];
结果如下:
1,book-1,bookfile,bookDescription,2011-10-18 14:33:46 +0000
10,book-10,bookfile,bookDescription,2011-10-18 14:33:55 +0000
2,book-2,bookfile,bookDescription,2011-10-18 14:33:47 +0000
3,book-3,bookfile,bookDescription,2011-10-18 14:33:48 +0000
4,book-4,bookfile,bookDescription,2011-10-18 14:33:49 +0000
5,book-5,bookfile,bookDescription,2011-10-18 14:33:50 +0000
6,book-6,bookfile,bookDescription,2011-10-18 14:33:51 +0000
7,book-7,bookfile,bookDescription,2011-10-18 14:33:52 +0000
8,book-8,bookfile,bookDescription,2011-10-18 14:33:53 +0000
9,book-9,bookfile,bookDescription,2011-10-18 14:33:54 +0000

 

7使用modifyTime (时间),升序排序
[self startArraySort:@"modifyTime" isAscending:YES];
结果如下:
1,book-1,bookfile,bookDescription,2011-10-18 14:36:23 +0000
2,book-2,bookfile,bookDescription,2011-10-18 14:36:24 +0000
3,book-3,bookfile,bookDescription,2011-10-18 14:36:25 +0000
4,book-4,bookfile,bookDescription,2011-10-18 14:36:26 +0000
5,book-5,bookfile,bookDescription,2011-10-18 14:36:27 +0000
6,book-6,bookfile,bookDescription,2011-10-18 14:36:28 +0000
7,book-7,bookfile,bookDescription,2011-10-18 14:36:29 +0000
8,book-8,bookfile,bookDescription,2011-10-18 14:36:30 +0000
9,book-9,bookfile,bookDescription,2011-10-18 14:36:31 +0000
10,book-10,bookfile,bookDescription,2011-10-18 14:36:32 +0000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值