第一种:利用数组的sortedArrayUsingComparator调用 NSComparator 

示例:

obj1obj2指的是数组中的对象

//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。

这个方法中的obj1obj2分别是指数组中的对象。

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];

//

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

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 数组排序的更多相关文章

  1. iOS数组排序 请求后,数组元素的排序 时间戳,最热,点赞数等

    [ZOYSessionManager dataWithUrlString:GetVideoDataComment andParameter:@{@"id":userID,@&quo ...

  2. iOS数组排序

    [_fields sortUsingComparator:^NSComparisonResult(UITextField *obj1, UITextField *obj2) { /* NSOrdere ...

  3. IOS数组排序等

    一.UITextField的代理方法 #pragma mark 当文本框开始编辑的时候调用---开始聚焦 - (void)textFieldDidBeginEditing:(UITextField * ...

  4. iOS数组使用

    相关链接: ios数组基本用法和排序 NSArray 排序汇总 iOS 数组排序方法 IOS-筛选数组内的元素 关于EnumerateObjectsUsingBlock和for-in之间的较量 [iO ...

  5. IOS对存放对象的数组排序

    我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个 Friend类,点菜程序会有一个Recipe类等.有时候我们希望 ...

  6. iOS学习16之OC集合遍历和数组排序

    1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...

  7. iOS学习之Object-C语言集合遍历和数组排序

    一.集合遍历      1.集合:OC中提供的容器类,数组,字典,集合.      2.遍历:对集合中元素依次取出的过程叫做遍历. 二.for循环遍历      1.通过for循环的循环变量用作数组元 ...

  8. iOS之NSArray数组排序

    一.数组遍历 除了常用的for和for-in遍历外,系统还提供了三种枚举遍历,对于大量的数据遍历可以使用下列三个方法. - (void)enumerateObjectsUsingBlock:(void ...

  9. iOS 二维数组排序小算法

    NSArray *tmp = @[@[@(1), @(2), @(3), @(4), @(5)],                     @[@(6), @(7), @(8), @(9), @(10 ...

随机推荐

  1. jenkins2 groovy语法

    文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd   安装: wget https://dl.bin ...

  2. C语言实现二叉树-02版

    ---恢复内容开始--- 昨天,提交完我们的二叉树项目后,今天早上项目经理早早给我打电话: 他说,小伙子干的不错.但是为什么你上面的insert是recusive的呢? 你难道不知道万一数据量大啦!那 ...

  3. duilib进阶教程 -- 改进List控件 (16)

    一.控件隐藏后,允许用代码操作所有行为. 在做播放器的时候,最常用的功能莫过于顺序播放.随机播放了,而当我们切换歌曲的时候,显然应该选中该歌曲,List的选中函数是SelectItem,但是调用此函数 ...

  4. paip.函数方法回调机制跟java php python c++的实现

    paip.函数方法回调机制跟java php python c++的实现 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...

  5. paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.

    paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结. 各种语言总结比较,脚本php.python果然是方便.简短,实用. uapi : get_w ...

  6. Merge Into

    Merge Into [dbo].[Student] S using [10.58.8.224\TEST].[TestDb].[dbo].[Student] T on S.ID=T.ID WHEN M ...

  7. Dash

    作为一名死coder,每天最常见的动作就是查看各种API文档,你一定也有过同时打开N个窗口(HTML.PDF.CHM),不停的在编辑器与文档之间切换的感受吧?怎么说呢,其实我很讨厌这种枯燥无味的动作, ...

  8. css伪元素选择器

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. Less安装与使用

    Less是一门CSS预处理语言,它扩展了CSS语言,增加了变量.Mixin.函数等特性,使CSS更易维护和拓展.(less可以运行在node或浏览器端) 首先:安装+配置环境 在node.js中通过它 ...

  10. Android中的IOC框架,完全注解方式就可以进行UI绑定和事件绑定

    转载请注明出处:http://blog.csdn.net/blog_wang/article/details/38468547 相信很多使用过Afinal和Xutils的朋友会发现框架中自带View控 ...