NSArray *arr = @[
@"234",
@"123",
@"235",
@"133"
];
NSArray *sortArr = [arr sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",sortArr);//用要排序的原数组调用实例方法,第二个参数,是方法选择,如果数组的元素都是字符串,那么直接用compare:就行
//block(代码块)排序
NSArray *sortArr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];//根据比较结果,如果结果是1,则交换
}];
NSLog(@"%@",sortArr2);
main函数
Student *s = [[Student alloc] init];
        s.name = @"zhangyu";
        s.age = 20;
       
        Student *s1 = [[Student alloc] init];
       
        s1.name = @"zhangyuzi";
        s1.age = 18;
       
        Student *s2 = [[Student alloc] init];
        s2.age = 21;
        s2.name = @"lirongsheng";
       
        NSArray *arr = @[
                         s,
                         s1,
                         s2
                         ];
       
       
        //自定义对象排序
        NSArray *stuArr = [arr sortedArrayUsingSelector:@selector(compareWithAge:)];
        NSLog(@"%@",stuArr);
    }
    return 0;
}
main.h
#import <Foundation/Foundation.h>

@interface Student : NSObject

@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) int age;

//自定义比较方法(排序时调用),要遵循compare:方法
//格式:-(NSComparisonResult)方法名:(要比较的类名 *)参数名

-(NSComparisonResult)compareWithName:(Student *)stu;

-(NSComparisonResult)compareWithAge:(Student *)stu;

@end
main.m
#import "Student.h"

@implementation Student

-(NSString *)description{
    return [NSString stringWithFormat:@"%@,%d",_name,_age];
}

//比较方法的实现
-(NSComparisonResult)compareWithName:(Student *)stu{
    //对象的比较结果就相当于属性比较结果,self,最开始代表第0个元素,后面再比较时,代表交换后的满足条件的对象
    /*
     0  self a[0];
     1  self a[1]
     2  self a[2]
     */
    //当self放在第一个参数是,代表升序,放在第二个参数时,代表降序    只有result为1的时候才进行交换
    NSComparisonResult result = [stu.name compare: self.name];
   
    return result;
}

-(NSComparisonResult)compareWithAge:(Student *)stu{
    NSComparisonResult result;
   
    if (self.age < stu.age) {
        result = 1;
    }else{
        result = -1;
    }
   
    return  result;
}

@end

转载于:https://www.cnblogs.com/zhangyu666666/p/4931124.html

排序的几种方法 oc相关推荐

  1. python列表的排序方法_pythonlist排序的两种方法及实例

    本文主要介绍了python list排序的两种方法及实例讲解.具有很好的参考价值,下面一起来看下吧 对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排 ...

  2. 按对象某属性排序的几种方法

    按对象某属性排序的几种方法: 第一种,可以实现边添加边排序,需要用到TreeSet. 第二种,用数组存放对象们,但是不需单独取出某属性排列好再重存,而是在原数组上用比较器重新排一次序.需要用到Arra ...

  3. C++结构体多级排序的三种方法

    C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序  1.自定义比较器 //自定义比较函数 bo ...

  4. oracle进行排序,oracle排序的几种方法

    1.创建数据库表 CREATE TABLE USER_INFO ( USERID      VARCHAR2(10 BYTE)                 NOT NULL, USERNAME   ...

  5. C# hashTable的遍历【2种方法】与排序【3种方法】

    private void Form1_Load(object sender, EventArgs e) { Hashtable ht = new Hashtable(); ht.Add("j ...

  6. java的arraylist_Java ArrayList排序的3种方法

    首页 > 基础教程 > 集合框架 > ArrayList类 Java ArrayList排序的3种方法 1. 使用Collections.sort()方法进行排序 ArrayList ...

  7. 计算机word降序排列怎么做,word中怎么进行排序的两种方法

    word文档中表格除了作为我们的编辑和展示功能之外,还可以进行排序功能,十分方便,那么下面就由学习啦小编给大家分享下word中进行排序的技巧,希望能帮助到您. word中进行排序方法一: 步骤一:将光 ...

  8. python list列表排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  9. list排序方法python_python list 排序的两种方法及实例讲解

    对 list 进行排序,Python 提供了两个方法: 方法1. 用 list 的内建函数 list.sort 进行排序 list.sort(func=None, key=None, reverse= ...

最新文章

  1. PubChem分子库
  2. 人工智能恶意使用报告:预测、预防和缓解
  3. “禁止大数据杀熟”拟入法!个性化推荐功能也应提供拒绝选项
  4. BCGSoft Demo示例展示:控件示例集合(1/2)
  5. 关于Python中迭代器的作用
  6. .adobe.ETH.btc.frendi.AUF.AYE.qwex后缀勒索病毒
  7. 如果一个人请优雅的活着。
  8. arm的bin二进制代码分析
  9. Oracle 列类型说明
  10. 武汉市房价数据挖掘与可视化分析(Python)
  11. 红米html查看器,小米 红米【AC2100】一键刷BREED【30秒刷完】小白脑残专用 无需工具TELNET + 检查坏块...
  12. 设置swiper中的高度
  13. 程序员的笔记本选择推荐
  14. 主板中的电池是怎样放电的?
  15. 有些事情,现在不想就晚了
  16. 斐讯路由器宽带运营商服务器,斐讯(PHICOMM)路由器
  17. c语言程序设计陈世清上海交通大学出版社,C语言程序设计
  18. plsql激活码(永久可用)
  19. 对于line-height的一些理解
  20. UML-----包图

热门文章

  1. 解决 Xcode10 编译错误 ld: library not found for -lstdc++6.0.9
  2. AndroidStudio 如何关闭 Install Run
  3. 第二次讲课内容(函数和快速幂)
  4. 简单的socket通信实现
  5. 压缩命令tar cf xx.tar -C的正确用法
  6. 求 1000 以内的完数
  7. 华为计算机如何计算sina,一道华为的“简单四则运算”题
  8. php 降低图像大小,在PHP中调整图像大小
  9. nb信号和4g信号_手机信号很强但是4G网络却很卡?学会这三招,立马恢复网速
  10. LTE小区选择和重选