Foundation框架--数组中内容的排序种类 实例

Person类中

@property(nonatomic,strong) NSString * name ;

@property(nonatomic ,strong)NSString *year;

@property(nonatomic,assign) int age;

-(id)initWithName:(NSString *)name andYear:(NSString *)year andAge:(int)age;


Person.m

- (NSString *)description

{

    return [NSString stringWithFormat:@"name=%@,year=%@,age=%d", _name,_year,_age];

}

//初始化

-(id)initWithName:(NSString *)name andYear:(NSString *)year andAge:(int)age

{

    if (self =[super init])

    {

        _name=name;

        _year=year;

        _age=age;

    }


    return self;

}


主函数中作如下操作:

//1.数组按照存入数据的顺序存储的。

        NSArray *array=@[@"b",@"d",@"1",@"a",@"z",@"2"];

        NSLog(@"排序前 array %@",array);

       array= [array sortedArrayUsingSelector:@selector(compare:)];

        NSLog(@"排序后 array %@",array);

        

        //2.使用block方式排序。

        NSArray *array1=@[@"z",@"4",@"3",@"x"];

        NSLog(@"array1 排序前%@",array1);

        array1 =[array1 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

//            NSComparisonResult rersult=[obj1 compare:obj2];

//            return rersult;

            return [obj1 compare:obj2];

        }];

        NSLog(@"array1 排序后 %@",array1);

        //3.自定对象的排序,根据属性排序

        Person *p=[[Person alloc]initWithName:@"jack "andYear:@"1990" andAge:20];

        Person *p1=[[Person alloc]initWithName:@"tom" andYear:@"2000"andAge:21];

        Person *p2=[[Person alloc]initWithName:@"hoo "andYear:@"1908" andAge:18];

        Person *p3=[[Person alloc]initWithName:@"hoo1 "andYear:@"1907" andAge:18];


        NSArray *array2=@[p,p1,p2,p3];

        NSLog(@"排序前 array2 %@",array2);

        NSSortDescriptor *d1=[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];

        NSSortDescriptor *d2=[NSSortDescriptor sortDescriptorWithKey:@"year" ascending:YES];

        NSArray *descripts=@[d1,d2];

        array2 =[array2 sortedArrayUsingDescriptors:descripts];

        NSLog(@"排序后 array2%@",array2);

        //4.自定义对象的block方法排序

        NSArray *array4=@[p,p1,p2,p3];

        NSLog(@"array4 排序前%@",array4);

        array4=[array4 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

            Person *p1=obj1;

            Person *p2=obj2;

            return [p1.year compare:p2.year];

        }];

        NSLog(@"array4 排序后 %@",array4);




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值