NSSet转成NSArray 以及NSSortDescriptor的使用
//如果想排序以后再取,可以这样:
NSSet *users = [groupUser users];
//如果是存的字典,则key后面写的是想按照哪个关键字进行排序
NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:@"displayName" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sd, nil];
NSArray *userArray = [users sortedArrayUsingDescriptors:sortDescriptors];
//如果直接取,可以这样:
NSArray *userArray = [users allObjects];
NSSortDescriptor 指定用于对象数组排序的对象的属性。
如果是Employee对象需要按照name来排序,就生成下面的descriptor
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:name ascending:YES];
如果需要多个排序,比如先按name排序,再按入职日期排序。那就创建两个descriptor
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:hireDate ascending:YES];
两个descriptor放到数组里一起传给需要排序的数组。
如果对象就是NSString,就是字符串数组排序,那更简单了,sortdescriptor的key直接指定为nil,就直接排序对象,而不是对象的某一个属性了。
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES];
NSArray *descriptors = [NSArray arrayWithObject:descriptor];
NSArray *myDataArray = [NSArray arrayWithObjects:@"what", @"xero", @"highligth",@"mountain", @"Victory", @"Balance", nil];
NSArray *resultArray = [myDataArray sortedArrayUsingDescriptors:descriptors];
NSLog(@"%@", resultArray);
NSArray 使用sortedArrayUsingDescriptors,返回排序好的数组。
NSMutableArray可以直接使用sortUsingDescriptors,对数组本身排序。
关于NSSortDescriptor
NSMutableArray *ma1 = [[NSMutableArray alloc] init];
[ma1 addObject:@"2"];
[ma1 addObject:@"1"];
[ma1 addObject:@"3"];
NSSortDescriptor *sd1 = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO];
NSArray *arr1 = [ma1 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd1, nil]];
for (NSString *str in arr1) {
NSLog(@"%@", str);
}
NSMutableArray *ma2 = [[NSMutableArray alloc] init];
[ma2 addObject:@"b"];
[ma2 addObject:@"c"];
[ma2 addObject:@"a"];
NSSortDescriptor *sd2 = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
NSArray *arr2 = [ma2 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd2, nil]];
for (NSString *str in arr2) {
NSLog(@"%@", str);
}
NSMutableArray *ma3 = [[NSMutableArray alloc] init];
NSMutableDictionary *md1 = [[NSMutableDictionary alloc] init];
[md1 setObject:@"e" forKey:@"name"];
NSMutableDictionary *md2 = [[NSMutableDictionary alloc] init];
[md2 setObject:@"d" forKey:@"name"];
NSMutableDictionary *md3 = [[NSMutableDictionary alloc] init];
[md3 setObject:@"f" forKey:@"name"];
[ma3 addObject:md1];
[ma3 addObject:md2];
[ma3 addObject:md3];
[md1 release];
[md2 release];
[md3 release];
NSSortDescriptor *sd3 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSArray *arr3 = [ma3 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd3, nil]];
for (NSMutableDictionary *md in arr3) {
NSLog(@"%@", [md objectForKey:@"name"]);
}
引用自:http://blog.sina.com.cn/s/blog_8c87ba3b0101phr5.html
http://www.cnblogs.com/zhw511006/archive/2011/06/16/2082787.html
http://blog.csdn.net/zhangkongzhongyun/article/details/7904055
NSSet转成NSArray 以及NSSortDescriptor的使用的更多相关文章
- YYModel 源码解读(二)之NSObject+YYModel.h (4)
接下来我们继续向下看 typedef struct { void *modelMeta; ///< _YYModelMeta void *model; ///< id (self) voi ...
- NSArray的Category
NSArray的Category 前言 项目中自己通过各种渠道及结合项目的经验整理了一套自己的工具包,里面有各种Category,及封装的方法,方便项目使用,今天先分享一下NSarray的Catego ...
- 12-6 NSArray
原文:http://rypress.com/tutorials/objective-c/data-types/nsarray NSArray NSArray 是 Objective-C中最常用的数组类 ...
- NSSet
版权声明:本文为博主原创文章,未经博主允许不得转载. 一.NSSet的创建和初始化 创建一个空的NSSet集合:+ (void)set; 用数组来创建NSSet集合:+ (id)setWithArra ...
- 史上最简洁的UITableView Sections 展示包含NSDicionary 的NSArray
这个最典型的就是电话本,然后根据A-Z分组, 当然很多例子,不过现在发现一个很简洁易懂的: 1. 准备数据,定义一个dictionary来显示所有的内容,这个dictionary对应的value全是数 ...
- iOS开发常见BUG和一些小技巧(ps:耐心看完,很实用)
[385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Created by beyond on 15/6/6. // Copyright ...
- iOS开发中遇到的一些问题及解决方案【转载】
iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Creat ...
- iOS-相关集合类
第一:NSArrary 1.1:集合的基本方法 1.创建集合 NSArray 是不可变数组,一旦创建完成就不能够对数组进行,添加,删除等操作 NSArray * array = [[NSArray ...
- 【iOS系列】-oc中的集合类
OC中的集合有:NSArray 数组 NSDictionary 字典 NSSet 集合 第一:NSArrary 1.1:集合的基本方法 //1.创建集合 //NSArray 是不可变数组,一旦创建完成 ...
随机推荐
- unix时间戳(unix timestamp)与北京时间的互转方法
1.在linux bash下北京时间与unix时间戳互转: 获取unix timestamp: 命令:date "+%s" 输出:1372654714 获取北京时间: 命令:dat ...
- 《鸟哥的Linux私房菜-基础学习篇(第三版)》(六)
第5章 首次登陆与在线求助man page 1. 首次登陆系统 首先谈了首次登陆CentOS 5.x界面.登陆选项中的会话是能够使用不同的图形界面来操作整个Linux系统. ...
- web.xml中的ServletContextListener
要想了解ServletContextListener,先看看web.xml中的<listener>配置. 一)web.xml中的内容载入顺序: 首先能够肯定的是,载入顺序与它们在 web. ...
- 转载 Url编码
http://www.cnblogs.com/artwl/archive/2012/03/07/2382848.html 混乱的URI编码 JavaScript中编码有三种方法:escape.enco ...
- ubuntu查看文件的权限
查看linux文件的权限: 查看path路径下名为filename的文件或文件夹的权限: ls -l path/filename ls -l path/filename 查看path路径下的所有文件的 ...
- asp.net listview 实现分页浏览效果
页面代码: <div style="margin-top:0px;">共<asp:Label ID="lb_count" runat=&quo ...
- Latex 2: 解决WinEdt和TexWorks用久之后忽然不能正反向搜索
说明:下面说的WinEdt版本是10.1,TexWorks是texlive2016中自带的texworks,如果情况不一样请自行测试,原理一样 1.不能正向搜索: 解决:① 确定路径名是英文名(实际上 ...
- vim插件:显示树形目录插件NERDTree安装 和 使用【转】
本文转载自:https://my.oschina.net/VASKS/blog/388907 下载和配置 NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.c ...
- How to Execute Page_Load() in Page's Base Class?
https://stackoverflow.com/questions/2737092/how-to-execute-page-load-in-pages-base-class We faced th ...
- linux下Apache默认安装路径
如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.conf 可以修改相关的访问路径及配置Apache模块路径:/usr/ ...