1.字符串比较

 - (NSComparisonResult)compare:(NSString *)str;

例如:

 NSString *str1 = @"zhangsan";
NSString *str2 = @"susan";
NSComparisonResult result = [str1 compare:str2];

2.数组的自定义排序

 NSArray *arr = [NSArray array];
[arr sortUsingSelector:@selector(自定义的比较方法)];

此处自定义的比较方法参照NSString中compare:方法进行设计。
例如设计一个Student类,其中包含name和age两个属性,若设计按照年龄进行比较的方法,则代码如下:

代码声明为:

 - (NSComparisonResult)compareStudent:(Student *)s;

代码实现为:

 - (NSComparisonResult)compareStudent:(Student *)s {
if(self.age > s.age){
return NSOrderedDescending;
}else if(self.age < s.age) {
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}

注意:上述方法的声明和实现全是在Student类中实现。
调用比较方法的代码为:

 [arr sortUsingSelector:@selector(compareStudent:)];//arr中存放了n个student对象

3.多属性比较的数组排序

 //描述器:第一个参数表示待比较的属性名称,第二个参数为YSE表示为升序,否则为降序
NSSortDescriptor *ageDes = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
NSSortDescriptor *nameDes = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
[arr sortUsingDescriptors:@[ageDes,nameDes]];//表示先按照年龄排序,然后按照名字排序

iOS基础知识之排序的更多相关文章

  1. iOS面试必备-iOS基础知识

    近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...

  2. iOS - 基础知识总结(OC版) 面试必看 再不看就要用swift了

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ...

  3. ios基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

  4. iOS 基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

  5. Python基础知识之排序法

    在Python开发中,我们会经常使用到排序法,排序的最简单的方法是用sort(list)函数,它接受一个列表并返回与有序的元素一个新的列表. 原始列表不被改变. a = [5, 1, 4, 3]    ...

  6. iOS基础知识之类别

    本类从三个方面介绍iOS中的类别,分别是  什么是类别:类别的语法:类别的作用.具体内容如下: 一.类别: 类的补丁:当不能获取现有类的源码,但需要对现有类的功能进行补充时,这种情况下使用类别. 类别 ...

  7. iOS基础知识之属性及属性关键字

    iOS属性及属性关键字 一.属性功能:1.给现有的成员变量生成一对setter/getter方法.2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的). 二.属性关键字 ...

  8. 【IOS基础知识】NSTimer定时器使用

    1.声明 NSTimer         *timer; 2.定义 timer = [NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfsele ...

  9. iOS基础知识之归档和解档

    归档和解档:即将数据写入文件和从文件中读取数据. 此处以plist文件为例说明, 一.plist文件使用时的注意事项: 1.plist文件中仅支持写入Array,Dictionary,Boolean, ...

随机推荐

  1. xfce的主题

    debian9默认的丑到无法直视 主题的下载地址 https://www.xfce-look.org/ 个人比较喜欢的几个 BubbleTux Flamebird JacWin10 安装方式 解压到~ ...

  2. 关于namespace的使用

    #include <string> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> int main ...

  3. [蓝桥杯]ALGO-8.算法训练_操作格子

    题目描述: 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: .修改一个格子的权值, .求连续一段格子权值和, .求连续一段格子的最大值. 对于每个2.3操作输出 ...

  4. Python如何查询Mysql

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据. fetchone(): 该方法获取下一个查询结果集.结果集是一个对象 fetch ...

  5. 数据类型---列表,for循环

    定义:列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作. L1=[]   #定义空列表 L2=[1,2,3,4]   #存4个值,索引为0-3 L3= ["ab ...

  6. bzoj4937: [Ceoi2016]popeala

    Description 你办了一场比赛,有n给人参加,只有一道题,有m个数据点,标号为1~m,每个测试点都有一个分数a[i].现在所 有选手已经提交了程序并且测评完了,你知道每个人都能通过哪些测试点. ...

  7. redis实现对账(集合比较)功能

    现状:每日在进行系统之间的订单对账时,往往是这样的操作流程: 1.从外部系统拉取数据存入本地数据库: 2.查询本地订单数据集合localSet: 3.查询外部系统订单数据集合outerSet; 4.以 ...

  8. SCCM 2012 R2实战系列之十三:辅助站点部署

    由于最近几个月一直处于AD升级项目中,很久没有更新SCCM的技术文档了.SCCM 2012中的辅助站点部署方法还是比较特别的,需要注意的地方也非常多,今天跟大家分享辅助站点的具体部署和配置方法. 1. ...

  9. 在Java中String类为什么要设计成final?String真的不可变吗?其他基本类型的包装类也是不可变的吗?

    最近突然被问到String为什么被设计为不可变,当时有点懵,这个问题一直像bug一样存在,竟然没有发现,没有思考到,在此总结一下. 1.String的不可变String类被final修饰,是不可继承和 ...

  10. Spring MVC RESTful

    REST: 即 Representational State Transfer,(资源)表现层状态转化是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便 具体说,就是 HTTP ...