zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [转]关闭 Chrome 浏览器的启动时提示 - 请停用以开发者模式运行的扩展程序
    [Java][Web]ServletContext 方法的应用
    SQL中char、varchar、nchar、nvarchar 详解
    数据库三级模式与二级映像
    数据库设计思考
    Oracle概述
    asp.net服务器控件button先执行js再执行后台的方法
    C# 序列化
    HTML服务器控件与Web服务器控件
    VS2013自带报表+打印功能
  • 原文地址:https://www.cnblogs.com/oc-bowen/p/5047806.html
Copyright © 2011-2022 走看看