OC NSArray数组排序

一、一般排序

1         // 排序
2         NSArray *arr = @[@"1",@"3",@"2",@"5"];
3         NSArray *newarr = [arr sortedArrayUsingSelector:@selector(compare:)];
4         NSLog(@"%@",newarr);

二、高级排序(数组中存的是对象,按对象的属性进行排序)

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface Student : NSObject
 4 
 5 @property (assign ,nonatomic) int age;
 6 
 7 //提供一种比较方式
 8 - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent;
 9 
10 
11 @end
12 
13 
14 
15 
16 #import "Student.h"
17 
18 @implementation Student
19 
20 - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent
21 {
   //方法1:

//      NSNumber *num1 = [[NSNumber alloc] initWithInteger:self.age];

//      NSNumber *num2 = [[NSNumber alloc] initWithInteger:tempStudent.age];

//      return [num1 compare:num2];

    //方法2:
22     if (self.age>tempStudent.age) {
23         return NSOrderedDescending;
24     }
25     else if (self.age<tempStudent.age)
26         return NSOrderedAscending;
27     else
28         return NSOrderedSame;
29 }
30 
31 -(NSString *)description
32 {
33     return [NSString stringWithFormat:@"age:%d",self.age];
34 }
35 
36 @end
37 
38 #import <Foundation/Foundation.h>
39 
40 #import "Student.h"
41 int main(int argc, const char * argv[]) {
42     @autoreleasepool {
43 
44         Student *stu1 = [[Student alloc] init];
45         stu1.age= 18;
46         Student *stu2 = [[Student alloc] init];
47         stu2.age= 15;
48         Student *stu3 = [[Student alloc] init];
49         stu3.age= 19;
50         
51         NSArray *stuArr = @[stu1,stu2,stu3];
52         NSArray *newStuArr = [stuArr sortedArrayUsingSelector:@selector(compareStudentWithAge:)];
53         NSLog(@"%@",newStuArr);
54 }
55 return 0;
56 }

三、超级排序(数组中对象多属性)

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface People : NSObject
 4 
 5 @property (assign,nonatomic) NSInteger age;
 6 @property (assign, nonatomic) NSInteger score;
 7 @property (copy,nonatomic) NSString *name;
 8 
 9 @end
10 
11 
12 
13 
14 
15 #import "People.h"
16 
17 @implementation People
18 
19 
20 - (NSString *)description
21 {
22     return [NSString stringWithFormat:@"age:%ld score:%ld name:%@", self.age,self.score,self.name];
23 }
24 
25 
26 #import <Foundation/Foundation.h>
27 #import "People.h"
28 
29 int main(int argc, const char * argv[]) {
30     @autoreleasepool {
31         
32         People *stu1 = [[People alloc] init];
33         stu1.age = 18;
34         stu1.score = 59;
35         stu1.name = @"bowen1";
36         
37         People *stu2 = [[People alloc] init];
38         stu2.age = 18;
39         stu2.score = 59;
40         stu2.name = @"bowen2";
41         
42         People *stu3 = [[People alloc] init];
43         stu3.age = 20;
44         stu3.score = 70;
45         stu3.name = @"bowen3";
46         
47         People *stu4 = [[People alloc] init];
48         stu4.age = 16;
49         stu4.score = 62;
50         stu4.name = @"bowen4";
51         
52         People *stu5 = [[People alloc] init];
53         stu5.age = 15;
54         stu5.score = 80;
55         stu5.name = @"bowen5";
56         
57         NSArray *arr = @[stu1,stu2,stu3,stu4,stu5];
58         
59         // 排序描述,数组按属性排序 NSSortDescriptor
60         NSSortDescriptor *ageSort = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
61         NSSortDescriptor *scoreSort = [[NSSortDescriptor alloc] initWithKey:@"score" ascending:YES];
62         NSSortDescriptor *nameScort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
63         
64         //使用[排序描述]对数组进行排序
65         NSArray *newArr = [arr sortedArrayUsingDescriptors:@[ageSort,scoreSort,nameScort]];
66         
67         NSLog(@"%@",newArr);
68         
69     }
70     return 0;
71 }
72 
73 @end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值