系统类型排序;

NSArray *goodsNames =@[@"computer",@"iphone",@"ipad"];

NSArray *sortedArray=[goodsNames sortedArrayUsingSelector:@selector(compare:)];

自定义排序

Person *p1=[[Person alloc]initWithName:@"tom" andAge:12 andCard:nil];

Person *p2=[[Person alloc]initWithName:@"jack" andAge:23 andCard:nil];

Person *p1=[[Person alloc]initWithName:@"maggie" andAge:11 andCard:nil];

NSArry *personsArray=@[p1,p2,p3];

在person类中定义一个comparePerson方法

/***************************************************************

-(NSComparisonResult)comparePerson:(Person *)person

{

    NSNumber *age1=[[NSNumber alloc]initWithInt:self.age];

    NSnumber *age2=[[NSNumber alloc]initWithInt:person.age];

  NSComparisonResult result=[age1 compare:age2];

  if(result == NSOrderedSame)

    {

    result=[self.name compare:person.name];

    }

  return result;

}

/******************************************************************

NSArray *personsArray=@[p1,p2,p3];

NSArray *sortedArray=[personsArray sortedArrayUsingSelector:@selector(comparePerson:)];

完成对personsArray进行排序

使用block进行排序

NSArray *sortedArray=[personsArray sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2){

Person *p1=(Person *)obj1;

Person *p2=(Person *)obj2;

NSNumber *age1=[[NSNumber alloc]initWithInt:self.age];

    NSnumber *age2=[[NSNumber alloc]initWithInt:person.age];

  NSComparisonResult result=[age1 compare:age2];

  if(result == NSOrderedSame)

    {

    result=[self.name compare:person.name];

    }

  return result;

}

复杂排序

NSSortDescriptor

NSSortDescriptor *sort1=[[NSSortDescriptor]initWithKey:@"name" ascending:YES];

NSSortDescriptor *sort2=[[NSSortDescriptor]initWithKey:@"age" ascending:YES];

NSArray *conditionsArray=@[sort1,sort2];

NSArray *sortedArray =[personsArray sortedArrayUsingDescriptors:conditionsArray];

/*******************

NSSortDescriptor *sort1=[[NSSortDescriptor]initWithKey:@"name" ascending:YES];

NSSortDescriptor *sort2=[[NSSortDescriptor]initWithKey:@"self.card.balance" ascending:YES];

Object-C-Foundation-数组排序的更多相关文章

  1. (译)Getting Started——1.3.3 Working with Foundation(使用Foundation框架)

    在你使用Objective-C语言开发应用时,你会发现在开发中,你会用到很多框架.尤其是Foundation框架,该框架为应用提供了最基础的服务.Foundation框架包括了代表着基本数据类型的va ...

  2. 从今天開始学习iOS开发(iOS 7版)--实现一款App之Foundation框架的使用

    iOSFoundation框架 当你着手为你的应用编写代码的时候,你会发现有很多可供使用的Objective-C的框架类,当中尤其重要的就是基础框架类.它为平台全部的应用提供基础服务.基础框架类中包括 ...

  3. ios 常用字符串的操作

    //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...

  4. WP8:在Cocos2d-x中使用OpenXLive

    一.    Cocos2d-x for Windows Phone 到2013年底,几大手游引擎都陆续支持WP8了,特别是Unity3D和Cocos2d-x.有过游戏开发经验的朋友们应该对这两个引擎不 ...

  5. IOS NS 字符串 数组 字典 文件 动态 静态 操作

    ios 常用字符串的操作   //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response e ...

  6. 【jquery】 API讲解 内部培训资料

    资料在百度云盘 一.jquery  API讲解 1.jquery  api如何使用 jquery  api http://www.hemin.cn/jq/ 2.常用api讲解 选择器: 通过$()获取 ...

  7. ios 对象的集合类(collection classes)

    当你着手为你的应用编写代码的时候,你会发现有许多可供使用的Objective-C的框架类,其中尤其重要的就是基础框架类,它为平台所有的应用提供基础服务.基础框架类中包括了表示字符串和数字等基本数据类型 ...

  8. ios 字符串的操作汇总

    //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...

  9. Laravel开发采坑系列问题

    2017年12月22日17:40:03 不定时更新 版本5.4.X 一下是可能会遇到的坑 1,必须的写路由转发才能访问控制器,当然你可以自动路由访问,但是需要些匹配规则,其实还是转发了 好多人讨论过自 ...

  10. iOS kvo 结合 FBKVOController 的使用

    iOS kvo 结合 FBKVOController 的使用 一:FBKVOControlloer是FaceBook开源的一个 在 iOS,maxOS上使用 kvo的 开源库: 提供了block和@s ...

随机推荐

  1. 【CF878C】Tournament set+并查集+链表

    [CF878C]Tournament 题意:有k个项目,n个运动员,第i个运动员的第j个项目的能力值为aij.一场比赛可以通过如下方式进行: 每次选出2个人和一个项目,该项目能力值高者获胜,败者被淘汰 ...

  2. Android开发中Chronometer的用法

    Chronometer集成自TextView,里面有个Handler负责定时更新ui. 其计时原理很简单:通过setBase(long t)方法设置好baseTime之后,当start()时,每隔一秒 ...

  3. Spark2 jar包运行完成,退出spark,释放资源

    import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark ...

  4. OSI互联数据包封装与解封装过程

    当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程. .当一个高层的数据包到达传输层,由于tel ...

  5. POJ-2356 Find a multiple(DFS,抽屉原理)

    Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7133 Accepted: 3122 Speci ...

  6. HIT 2715 - Matrix3 - [最小费用最大流][数组模拟邻接表MCMF模板]

    题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2715 Time limit : 5 sec Memory limit : 64 M Zhouguyue ...

  7. Gym - 101028I March Rain 二分

    http://codeforces.com/gym/101028/problem/I 题意:给你n个洞,k个布条,问布条能贴到所有洞时的最小值. 题解:二分答案,因为答案越大就越容易满足条件. 技巧: ...

  8. easyui DataGrid表体单元格跨列rowspan

    最近做项目用到了jquery easyui,其中一组DataGrid做的报表是给客户大领导看的,客户要求报表样式跟他们原有系统的一模一样(如下图1). DataGrid样式好调,只是城市名称单元格跨行 ...

  9. 发送html内容的email(转)

    html中无法使用css, js.你发送一个<div>片断就好了,不用写整个html页面,因为即使写了,邮件客户端也会删除body之外(包括<body>这个标签)的内容,只留下 ...

  10. ansible 批量在远程主机上执行命令

    ansible 和 saltstack 都是为了同时在多台主机上执行相同的命令, 但是 salt配置麻烦,ansible基本不用配置, ansible 通过ssh来连接并控制被控节点 1. 安装 第一 ...