系统类型排序;

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. Docker 容器管理:rancher

    Rancher:https://www.cnrancher.com/ 是一个开源的企业级全栈化容器部署及管理平台. 定位上和 K8s 比较接近,都是通过 web 界面赋予完全的 docker 服务编排 ...

  2. 预编译 ASP.NET 网站以进行部署

    预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹. .NET Framework 将安装在以下位置. %windir%\Microso ...

  3. [APP] Android 开发笔记 001-环境搭建与命令行创建项目

    1. 安装JDK,SDK JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Android SDK http ...

  4. C语言中的数组的使用——混乱的内存管理

    在C语言中想要创建数组只能自己malloc或者calloc,数组复制则是memcpy. 这样创建出来的数组在调用时是不会检测数组边界的,即你声明了一个长度为5的数组,却可以访问第6个位置……也可以给第 ...

  5. thinkphp---设置路由

    在做一个项目,在项目完成之后,配置一下路由,让URL更容易美观. 下面是具体的配置: Common / Conf / config.php // 路由处理 'URL_HTML_SUFFIX'=> ...

  6. 基于pandas python的美团某商家的评论销售(数据分析)

    数据初步的分析 本文是该系列的第一篇 数据清洗 数据初步的统计 第二篇 数据可视化 第三篇 数据中的评论数据用于自然语言处理 from pyecharts import Bar,Pie import ...

  7. python 关于GUI的思考(转)

    作者:知乎用户链接:https://www.zhihu.com/question/19721063/answer/21311275来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  8. Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)

    Can't connect to MySQL server Lost connection to MySQL server during query · Issue #269 · PyMySQL/Py ...

  9. Python 标准输出 sys.stdout 重定向

    本文环境:Python 2.7 使用 print obj 而非 print(obj) 一些背景 sys.stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候, ...

  10. CentOS工作内容(三)配置网络IP地址

    CentOS工作内容(三)配置网络IP地址 用到的快捷键 tab 自动补齐(有不知道的吗) ctrl+a 移动到当前行的开头(a ahead) ctrl+u 删除(剪切)此处至开始所有内容 vim 末 ...