系统类型排序;

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. dhroid - Perference

    SharedPreferences 是我们开发android使用很多的工具通常我们是这样使用的 SharedPreferences share=getSharedPreferences("n ...

  2. 利用n和nvm管理Node的版本

    写在前面 Node版本的迭代速度很快,版本很多(横跨0.6到0.11),升级Node版本成为了一个问题.目前有n和nvm这两个工具可以对Node进行无痛升级,本文简单介绍一下二者的使用. n n是No ...

  3. Mongoose学习参考资料

    我们学习node操作mongodb数据库时,可能经常要用到MongoDB 数据库的模型工具Mongoose,下面是我整理的一些学习资料: 番外篇之——使用 Mongoose:https://githu ...

  4. Spark2 Dataset之视图与SQL

    // 创建视图 data.createOrReplaceTempView("Affairs") val df1 = spark.sql("SELECT * FROM Af ...

  5. pandas 中的DataFrame.where()使用

    pandas.DataFrame.where DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, try_ca ...

  6. 170817、Nginx详细配置

    Nginx能做什么 nginx主要是做转发,当然也可以做静态资源文件缓存,做转发的时候,比如你有几个url,可以统一通过走nginx,然后通过nginx转发到不同的url上 1.反向代理 反向代理应该 ...

  7. css实现表格的td里面的内容居中.

    <td align="center" valign="middle">前一个是水平居中 后一个是垂直居中对应的css写法:<td style= ...

  8. Pyplot tutorial,Pyplot官方教程自翻译

      matplotlib.pyplot is a collection of command style functions that make matplotlib work like MATLAB ...

  9. 计蒜客 31451 - Ka Chang - [DFS序+树状数组][2018ICPC沈阳网络预赛J题]

    题目链接:https://nanti.jisuanke.com/t/31451 Given a rooted tree ( the root is node $1$ ) of $N$ nodes. I ...

  10. CCCC L2-017. 人以群分 贪心

    https://www.patest.cn/contests/gplt/L2-017 题解:贪心,一点小数学 坑:XJB改下标改错了 #include <iostream> #includ ...