一、一般排序

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

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

 #import <Foundation/Foundation.h>

 @interface Student : NSObject

 @property (assign ,nonatomic) int age;

 //提供一种比较方式
- (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent; @end #import "Student.h" @implementation Student - (NSComparisonResult)compareStudentWithAge:(Student *)tempStudent
{
   //方法1:

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

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

//      return [num1 compare:num2];

    //方法2:
if (self.age>tempStudent.age) {
return NSOrderedDescending;
}
else if (self.age<tempStudent.age)
return NSOrderedAscending;
else
return NSOrderedSame;
} -(NSString *)description
{
return [NSString stringWithFormat:@"age:%d",self.age];
} @end #import <Foundation/Foundation.h> #import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool { Student *stu1 = [[Student alloc] init];
stu1.age= ;
Student *stu2 = [[Student alloc] init];
stu2.age= ;
Student *stu3 = [[Student alloc] init];
stu3.age= ; NSArray *stuArr = @[stu1,stu2,stu3];
NSArray *newStuArr = [stuArr sortedArrayUsingSelector:@selector(compareStudentWithAge:)];
NSLog(@"%@",newStuArr);
}
return ;
}

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

 #import <Foundation/Foundation.h>

 @interface People : NSObject

 @property (assign,nonatomic) NSInteger age;
@property (assign, nonatomic) NSInteger score;
@property (copy,nonatomic) NSString *name; @end #import "People.h" @implementation People - (NSString *)description
{
return [NSString stringWithFormat:@"age:%ld score:%ld name:%@", self.age,self.score,self.name];
} #import <Foundation/Foundation.h>
#import "People.h" int main(int argc, const char * argv[]) {
@autoreleasepool { People *stu1 = [[People alloc] init];
stu1.age = ;
stu1.score = ;
stu1.name = @"bowen1"; People *stu2 = [[People alloc] init];
stu2.age = ;
stu2.score = ;
stu2.name = @"bowen2"; People *stu3 = [[People alloc] init];
stu3.age = ;
stu3.score = ;
stu3.name = @"bowen3"; People *stu4 = [[People alloc] init];
stu4.age = ;
stu4.score = ;
stu4.name = @"bowen4"; People *stu5 = [[People alloc] init];
stu5.age = ;
stu5.score = ;
stu5.name = @"bowen5"; NSArray *arr = @[stu1,stu2,stu3,stu4,stu5]; // 排序描述,数组按属性排序 NSSortDescriptor
NSSortDescriptor *ageSort = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
NSSortDescriptor *scoreSort = [[NSSortDescriptor alloc] initWithKey:@"score" ascending:YES];
NSSortDescriptor *nameScort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; //使用[排序描述]对数组进行排序
NSArray *newArr = [arr sortedArrayUsingDescriptors:@[ageSort,scoreSort,nameScort]]; NSLog(@"%@",newArr); }
return ;
} @end

OC NSArray数组排序的更多相关文章

  1. OC NSArray 数组

    # OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...

  2. OC中数组排序的3种方法

    总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...

  3. iOS - OC NSArray 数组

    前言 @interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSe ...

  4. OC中数组排序总结

    过完节回来,感觉很多东西都生疏了.总结一下数组的排序.应该不会太完美,后续添加补充. OC中的数组排序方法其实不太多,要根据不同的使用场景来使用不同的方法.Foundation框架中一般用到一下几个方 ...

  5. OC NSArray使用

    #import <Foundation/Foundation.h> #import "Student.h" #pragma mark 创建一个数组 void array ...

  6. OC:数组排序、时间格式化字符串

    数组排序 //不可变数组的排序 NSArray * arr = [NSArray arrayWithObjects:@"hellow", @"lanou", @ ...

  7. NSArray 数组排序

    //方法1,使用自带的比较器 //compare是数组自带的比较方法 NSArray *array=[NSArray arrayWithObjects:@"3",@"1& ...

  8. OC——NSArray和NSMutableArray

    /*---------------------NSArray---------------------------*/ //创建数组 NSArray *array1 = [NSArray arrayW ...

  9. 死去活来的OC NSArray 中文排序 及输出

    目的 1.NSArray 能够支持中文排序 2.NSLog 能够直接输出 NSArray 内的中文(事实上 java 直接打印数组也不能显示内容哈) 又是死去活来的搞了1个小时,分类实现.废话少说,上 ...

随机推荐

  1. ELK之logstash6.5

    首先安装,这里采用rpm安装: # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 创建repo文件: [root@no ...

  2. 20145106 《Java程序设计》第9周学习总结

    教材学习内容总结 JDBC标准主要分为两个部分:JDBC应用程序开发者接口以及JDBC驱动程序开发者接口. 如果将来要换为Oracle数据库,只要置换Oracle驱动程序. Java中的数据类型和SQ ...

  3. 20145307陈俊达_安卓逆向分析_APKtools分析smail

    20145307陈俊达_安卓逆向分析_APKtools分析smail 引言 真刺激呢!到了第二篇博客了,难度开始加大,之前是简单的dex2jar和有图形界面的jd-gui,现在来隆重介绍强大的反汇编工 ...

  4. [c/c++]指针(1)

    指针算是一种特殊的变量,它存储的是一个内存地址,你既可以通过它来给制定内存地址赋值 (可能会被操作系统收回或者与其它程序冲突),又可以提高运行速度 First Step: 声明一个指针变量 int* ...

  5. FJNUOJ Yehan’s hole(容斥求路径数 + 逆元)题解

    Description Yehan is a angry grumpy rabbit, who likes jumping into the hole. This day,Yehan jumps ag ...

  6. [BZOJ5139][Usaco2017 Dec]Greedy Gift Takers 权值线段树

    Description Farmer John's nemesis, Farmer Nhoj, has NN cows (1≤N≤10^5), conveniently numbered 1…N. T ...

  7. 用jQuery实现ajax总结以及跨域问题

    本文为作者原创,未经博主允许,不可转载 ajax请求的常用的参数设置: type:请求类型,"POST","GET",默认为geturl:发送请求的地址data ...

  8. 【TCP/IP详解 卷一:协议】第十二章 广播和多播

    建议参考:广播和多播 IGMP 12.1 引言 IP地址知识点回顾: IP地址分为三种:(1)单播地址 (2)广播地址 (3)多播地址 另外一种是,IP地址一般划分成五类:A-E类. 单播 考虑 类似 ...

  9. Linux进程内存布局(翻译)

    Anatomy of a Program in Memory 在一个多任务OS中,每个进程都运行在它自己的内存沙箱中.这个沙箱就是虚拟地址空间,在32位下就是一块容量为4GB的内存地址.内核将这些虚拟 ...

  10. python 千位分隔符,

    >>>) >>>'1,234,567,890'