ios 数组排序
第一种:利用数组的sortedArrayUsingComparator调用 NSComparator
示例:
obj1和obj2指的是数组中的对象
//1.数组中存放的是字符
NSComparator cmptr = ^(id obj1, id obj2){
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
};
NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil];
NSLog(@"排序前:%@",sortArray);
NSArray *array = [sortArray sortedArrayUsingComparator:cmptr];
NSLog(@"排序后:%@",array);
//2.数组中存放的是字典对象
NSComparator cmptr = ^(id obj1,id obj2) {
if ([[obj1 objectForKey:@"date_update"] intValue] > [[obj2 objectForKey:@"date_update"] intValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([[obj1 objectForKey:@"date_update"] intValue] < [[obj2 objectForKey:@"date_update"] intValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
};
favoritesArray为NSArray数组,内容为:(
{
"date_update" = 1374823501;
id = 2;
videolink = "http://v.youku.com/player/getRealM3U8/vid/XNTY5NzcxNTAw/type//video.m3u8";
},
{
"date_update" = 1375177741;
id = 1;
videolink = "http://v.youku.com/player/getRealM3U8/vid/XNTY5MjcwNDcy/type//video.m3u8";
},
{
"date_update" = 1374824546;
id = 3;
videolink = "http://v.youku.com/player/getRealM3U8/vid/XNTY5Njk0Mjg0/type//video.m3u8";
}
)
favoritesArray = [favoritesArray sortedArrayUsingComparator:cmptr];
NSLog(@"排序后 array ===%@",favoritesArray);
第二种排序方法:利用sortedArrayUsingFunction 调用对应方法customSort。
这个方法中的obj1和obj2分别是指数组中的对象。
NSInteger customSort(id obj1, id obj2, void *context)
{
if ([[obj1 objectForKey:@"date_update"] integerValue] > [[obj2 objectForKey:@"date_update"] integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([[obj1 objectForKey:@"date_update"] integerValue] < [[obj2 objectForKey:@"date_update"] integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}
favoritesArray = [favoritesArray sortedArrayUsingFunction:customSort context:nil];
//
NSInteger intSort(id num1, id num2,void*context){
int v1 =[num1 intValue];int v2 =[num2 intValue];
if(v1 < v2)returnNSOrderedAscending;
elseif(v1 > v2)returnNSOrderedDescending;
elsereturnNSOrderedSame;
}
NSArray*sorted_bookings =[myUnsortedArray sortedArrayUsingFunction:Sort_Bookingdate_Comparer context:self]; NSIntegerSort_Bookingdate_Comparer(id id1, id id2,void*context){
// Sort
FunctionBooking* booking1 =(Booking*)id1;
Booking* booking2 =(Booking*)id2;
return([booking1.BOOKING_DATE compare:booking2.BOOKING_DATE]);
}
This I used to sort bookings by bookingdate. Booking is a class with a synthesized instance variable called BOOKING_DATE.
[opponentMatchDicts sortUsingFunction:compareMatchByDate context:nil];
static int compareMatchByDate( id m1, id m2,void*context){
NSDictionary*mDict1 =(NSDictionary*) m1;
NSDictionary*mDict2 =(NSDictionary*) m2;
NSDate*date1 =[mDict1 objectForKey:kMatchNSDate];
NSDate*date2 =[mDict2 objectForKey:kMatchNSDate];
int rv =[date1 compare:date2];
return rv;
}
//
第三种利用sortUsingDescriptors调用NSSortDescriptor
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date_update" ascending:NO];
//其中,date_update为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便.
//1.对数组中的字典对象排序
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date_update" ascending:YES];
[favoritesArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSLog(@"排序后 favoritesArray===%@",favoritesArray);
//2.可变数组
NSMutableArray *tempArray = [[NSMutableArray alloc]init];
for (int i=0; i<10; i++) {
NSString *str = [NSString stringWithFormat:@"%d",i];
NSMutableDictionary *httpHeaderDic = [[NSMutableDictionary alloc]initWithCapacity:2];
[httpHeaderDic setValue:str forKey:@"id"];
[tempArray addObject:httpHeaderDic];
}
NSLog(@"排序前 Array ==%@",tempArray);
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:NO];
[tempArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor2]];
NSLog(@"排序后 Array ==%@",tempArray);
ios 数组排序的更多相关文章
- iOS数组排序 请求后,数组元素的排序 时间戳,最热,点赞数等
[ZOYSessionManager dataWithUrlString:GetVideoDataComment andParameter:@{@"id":userID,@&quo ...
- iOS数组排序
[_fields sortUsingComparator:^NSComparisonResult(UITextField *obj1, UITextField *obj2) { /* NSOrdere ...
- IOS数组排序等
一.UITextField的代理方法 #pragma mark 当文本框开始编辑的时候调用---开始聚焦 - (void)textFieldDidBeginEditing:(UITextField * ...
- iOS数组使用
相关链接: ios数组基本用法和排序 NSArray 排序汇总 iOS 数组排序方法 IOS-筛选数组内的元素 关于EnumerateObjectsUsingBlock和for-in之间的较量 [iO ...
- IOS对存放对象的数组排序
我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个 Friend类,点菜程序会有一个Recipe类等.有时候我们希望 ...
- iOS学习16之OC集合遍历和数组排序
1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...
- iOS学习之Object-C语言集合遍历和数组排序
一.集合遍历 1.集合:OC中提供的容器类,数组,字典,集合. 2.遍历:对集合中元素依次取出的过程叫做遍历. 二.for循环遍历 1.通过for循环的循环变量用作数组元 ...
- iOS之NSArray数组排序
一.数组遍历 除了常用的for和for-in遍历外,系统还提供了三种枚举遍历,对于大量的数据遍历可以使用下列三个方法. - (void)enumerateObjectsUsingBlock:(void ...
- iOS 二维数组排序小算法
NSArray *tmp = @[@[@(1), @(2), @(3), @(4), @(5)], @[@(6), @(7), @(8), @(9), @(10 ...
随机推荐
- SQL Server FileStream
以往我们对文件管理有两种方法: 数据库只保存文件的路径,具体的文件保存在文件服务器(NFS)上,使用时,编程实现从文件服务器读取文件: 将文件直接以varbinary(max)或image数据类型保存 ...
- WPF oxyPlot 使用总结
oxyPlot能够简易的创建图表并且该库也在Github上面开源直通门.以下是笔者基础使用总结.本文例子的源码下载 1.安装与引用 新建一个wpf应用程序,然后使用Nuget控制台安装OxyPlot和 ...
- Spring MVC + jpa框架搭建,及全面分析
一,hibernate与jpa的关系 首先明确一点jpa是什么?以前我就搞不清楚jpa和hibernate的关系. 1,JPA(Java Persistence API)是Sun官方提出的Java持久 ...
- Leetcode 130 Surrounded Regions DFS
将内部的O点变成X input X X X XX O O X X X O XX O X X output X X X XX X X XX X X XX O X X DFS的基本框架是 void dfs ...
- 智能配置item
iTerm配置说明 ==== **这是一个很智能的配置,不论你电脑里面有没有安装iTerm,不管你有没有.zshrc配置文件,git配置文件,git忽略文件,以及git的默认编辑器都已经更改为vim, ...
- [推荐]Bitnami 开源软件包安装解决方案
[推荐]Bitnami 开源软件包安装解决方案 Bitnami is an app store for server software. Install your favorite applicati ...
- [原创]软件质量保证圈QQ群:197915314
[原创]软件质量保证圈QQ群:197915314 软件质量保证圈QQ群:197915314,讨论软件工程.软件过程改进.软件质量保证等(非测试群)! 欢迎各位同学来,来时请自报家门,名片修改格式:sh ...
- Asp.Net正在中止线程引发的问题
背景: Asp.Net做的一个同步程序,同步的方法是通过JQuery的Ajax调用,同步过程大概要执行20多分钟,程序部署到服务器后执行一段时间后就弹出执行失败的对话框,日志记录的错误信息是“正在中止 ...
- 【Android】Android 移动应用数据到SD
[Android]Android 移动应用数据到SD 在应用的menifest文件中指定就可以了,在 <manifest> 元素中包含android:installLocation 属性, ...
- 【转】iOS超全开源框架、项目和学习资料汇总
iOS超全开源框架.项目和学习资料汇总(1)UI篇iOS超全开源框架.项目和学习资料汇总(2)动画篇iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇iOS超全开源框架.项目和学习资料汇总 ...