ios数组里的model排序(高级排序)

- (NSMutableArray *)datas
{
    if (!_datas) {
        
        _datas = [NSMutableArray array];
        
        Person *p1 = [[Person alloc] initWithName:@"jack" age:20 score:97];
        Person *p2 = [[Person alloc] initWithName:@"anne" age:8 score:33];
        Person *p3 = [[Person alloc] initWithName:@"zhng" age:54 score:11];
        Person *p4 = [[Person alloc] initWithName:@"tuoma" age:76 score:54];
        Person *p5 = [[Person alloc] initWithName:@"gril" age:95 score:12];
        Person *p6 = [[Person alloc] initWithName:@"boy" age:21 score:76];
        Person *p7 = [[Person alloc] initWithName:@"big" age:53 score:98];
        Person *p8 = [[Person alloc] initWithName:@"hack" age:33 score:66];
        Person *p9 = [[Person alloc] initWithName:@"zoom" age:33 score:21];
        Person *p10 = [[Person alloc] initWithName:@"right" age:69 score:88];

        
        
        [_datas addObject:p1];
        [_datas addObject:p2];
        [_datas addObject:p3];
        [_datas addObject:p4];
        [_datas addObject:p5];
        [_datas addObject:p6];
        [_datas addObject:p7];
        [_datas addObject:p8];
        [_datas addObject:p9];
        [_datas addObject:p10];


    }
    return _datas;

}

接下来我们需要进行排序:

 规则如下:

  1.首先按照年龄排序

  2.如果年龄相同按照分数排序

那么我们需要创建排序描述者,一个描述着只能对一个属性进行描述 如果需要描述多个 我们需要创建多个描述者

我们这里的需求就需要创建两个描述者  一个是对年龄描述 一个是对分数描述 代码如下:

NSSortDescriptor *ageSD = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];//ascending:YES 代表升序 如果为NO 代表降序
NSSortDescriptor *scoreSD=[NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];

创建好这两个描述者之后 我们就可以调用数组的 sortedArrayUsingDescriptors 方法来实现排序

sortedArrayUsingDescriptors方法接收一个数组的参数 里面放描述者 然后他会返回一个排序好的数组 所以我们这样做:

self.datas = [[self.datas sortedArrayUsingDescriptors:@[ageSD,scoreSD]] mutableCopy];

我们点击导航栏左边的排序按钮的时候 会执行以下操作:

复制代码
- (IBAction)sortAge:(id)sender {
    
    NSSortDescriptor *ageSD = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
    NSSortDescriptor *scoreSD=[NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];
    
    self.datas = [[self.datas sortedArrayUsingDescriptors:@[ageSD,scoreSD]] mutableCopy];
    //[self.datas sortUsingDescriptors:@[ageSD,scoreSD]]  可能也可以

    [self.tableView reloadData];
    
    
}
http://www.cnblogs.com/syios/p/5918868.html
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值