前言
实际工作项目有这么一个需求:
一个UITableView
列表需要同时展示两个不同接口的数据,并按照时间的顺序排序,起初自己还傻傻的写排序算法并展示,但非常浪费时间,后来才发现iOS官方的NSSortDescriptor即可以满足需求,非常好用。
1、NSSortDescriptor的介绍
你可以将它看做是对一个排序规则的描述者 因为我们可以使用它来对我们数组中的对象进行排序操作。
2、NSSortDescriptor的使用
假设现在有这样一个需求: 数组里面有十个Person对象 每一个Person对象有自己的名字、年龄和分数 我们需要对数组里面的这十个对象做排序操作 规则如下:
1.首先按照名字首字母排序;
2.如果首字母相同则按照年龄排序;
要实现这个需求 如果你之前 不知道NSSortDescriptor 这个对象 你可能会写很多的代码 现在借助这个对象我们会非常容易的实现上面的需求。
- 因为一个描述者只能对一个属性进行描述 如果需要描述多个 我们需要创建多个描述者,根据我们的需求就需要创建两个描述者 一个是对名字描述 一个是对年龄描述 代码如下:
NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];//YES 代表升序 NO代表降序
NSSortDescriptor *ageDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
- 创建好这两个描述者之后 我们就可以调用数组的
sortedArrayUsingDescriptors
方法来实现排序,该方法里面放描述者 然后他会返回一个排序好的数组
self.dataArray = [[self.dataArray sortedArrayUsingDescriptors:@[nameDescriptor,ageDescriptor]] mutableCopy];
- 我们点击导航栏左边的排序按钮的时候 会执行排序操作。
源码链接 密码: eh23