iOS探索:对NSArray中自定义的对象进行排序.docx

iOS探索:对NSArray中自定义的对象进行排序.docx

ID:62037265

大小:79.41 KB

页数:3页

时间:2021-04-15

iOS探索:对NSArray中自定义的对象进行排序.docx_第1页
iOS探索:对NSArray中自定义的对象进行排序.docx_第2页
iOS探索:对NSArray中自定义的对象进行排序.docx_第3页
资源描述:

《iOS探索:对NSArray中自定义的对象进行排序.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、网址:edu.51CTO.comiOS探索:对NSArray中自定义的对象进行排序我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中。例如一个音乐程序可能会有一个Song类,聊天程序则又一个Friend类,点菜程序会有一个Recipe类等。有时候我们希望在程序中显示的列表数据是按照一定顺序进行排列的,本文我们就来看看在iOS中有哪些方法可以对NSArray中的对象进行排序。下面是目录:·小引·使用NSComparator进行排序·使用NSDescriptor进行排序·使用selector进行排序小引我

2、们将要排序的对象是一个Persion类,如下定义:1.@interface Person : NSObject 2.@property (nonatomic, copy) NSString *name; 3.@property (nonatomic, copy) NSString *surname; 4.@property (nonatomic, strong) NSDate *dateOfBirth; 5.@end 而数组中包含如下内容:1.Smith John 03/01/1984 2.Andersen Jane 16/0

3、3/1979 网址:edu.51CTO.com1.Clark Anne 13/09/1995 2.Smith David 19/07/1981 3.Johnson Rose 22/02/1989 使用NSComparator进行排序comparator实际上是用一个block对象作比较操作。它的定义如下所示:1.typedef NSComparisonResult (^NSComparator)(id obj1, id obj2); 上面的参数(obj1、obj2)就是我们将要做比较的对象。block返回的结果为NSCompa

4、risonResult类型来表示两个对象的顺序。要对整个数组做排序,则需要使用NSArray的sortArrayUsingComparator:方法,如下代码所示:1.NSArray *sortedArray = [self.persons sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2){ 2.    return [p1.surname compare:p2.surname]; 3.}]; 最终排序的结果如下所示:1.Anderse

5、n Jane 2.Clark Anne 3.Johnson Rose 4.Smith John 5.Smith David 使用NSDescriptor进行排序Sortdescriptor不仅可以用来对数组进行排序,还能指定element在tableview中的排序,以及CoreData中对fetchrequest返回的数据做排序处理。通过sortdescriptor可以很方便的对数组进行多个key的排序。下面来看看如何对我们的数组做surname排序,然后在进行name排序:1.NSSortDescriptor *first

6、Descriptor = [[NSSortDescriptor alloc] initWithKey:@"surname" ascending:YES]; 2.NSSortDescriptor *secondDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 3. 网址:edu.51CTO.com1.NSArray *sortDescriptors = [NSArray arrayWithObjects:firstDescript

7、or, secondDescriptor, nil]; 2. 3.NSArray *sortedArray = [self.persons sortedArrayUsingDescriptors:sortDescriptors]; 上面代码的排序结果如下所示:1.Andersen Jane 2.Clark Anne 3.Johnson Rose 4.Smith David 5.Smith John 使用selector进行排序当面,我们也可以定义自己的方法进行两个对象做比较,并将该方法用于数组排序。comparator消息会被

8、发送到数值中的每个对象中,并携带数组中另外的一个对象当做参数。自定义的的方法的返回结果是这样的:如果本身对象小于参数中的对象,就返回NSOrederedAscending,相反,则返回NSOrderedDescending,如果相等,那么返回NSOrderedSame。如下代

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。