Object-C-Foundation-数组排序
系统类型排序;
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-数组排序的更多相关文章
- (译)Getting Started——1.3.3 Working with Foundation(使用Foundation框架)
在你使用Objective-C语言开发应用时,你会发现在开发中,你会用到很多框架.尤其是Foundation框架,该框架为应用提供了最基础的服务.Foundation框架包括了代表着基本数据类型的va ...
- 从今天開始学习iOS开发(iOS 7版)--实现一款App之Foundation框架的使用
iOSFoundation框架 当你着手为你的应用编写代码的时候,你会发现有很多可供使用的Objective-C的框架类,当中尤其重要的就是基础框架类.它为平台全部的应用提供基础服务.基础框架类中包括 ...
- ios 常用字符串的操作
//将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...
- WP8:在Cocos2d-x中使用OpenXLive
一. Cocos2d-x for Windows Phone 到2013年底,几大手游引擎都陆续支持WP8了,特别是Unity3D和Cocos2d-x.有过游戏开发经验的朋友们应该对这两个引擎不 ...
- IOS NS 字符串 数组 字典 文件 动态 静态 操作
ios 常用字符串的操作 //将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response e ...
- 【jquery】 API讲解 内部培训资料
资料在百度云盘 一.jquery API讲解 1.jquery api如何使用 jquery api http://www.hemin.cn/jq/ 2.常用api讲解 选择器: 通过$()获取 ...
- ios 对象的集合类(collection classes)
当你着手为你的应用编写代码的时候,你会发现有许多可供使用的Objective-C的框架类,其中尤其重要的就是基础框架类,它为平台所有的应用提供基础服务.基础框架类中包括了表示字符串和数字等基本数据类型 ...
- ios 字符串的操作汇总
//将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...
- Laravel开发采坑系列问题
2017年12月22日17:40:03 不定时更新 版本5.4.X 一下是可能会遇到的坑 1,必须的写路由转发才能访问控制器,当然你可以自动路由访问,但是需要些匹配规则,其实还是转发了 好多人讨论过自 ...
- iOS kvo 结合 FBKVOController 的使用
iOS kvo 结合 FBKVOController 的使用 一:FBKVOControlloer是FaceBook开源的一个 在 iOS,maxOS上使用 kvo的 开源库: 提供了block和@s ...
随机推荐
- 简易扩展Visual Studio UnitTesting支持TestMethodCase
NUnit的TestCaseAttribute可以简化大量的测试参数输入用例的编写,如果基于Visual Studio Unit Test Project开发则默认没有类似的功能,看一段对比代码: p ...
- elk单台环境搭建
一.简介1.核心组成ELK由Elasticsearch.Logstash和Kibana三部分组件组成:Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分 ...
- [工具] Textify – 复制不可能的窗口内容[Win]
Textify 是一款 Windows 下的小工具,能够复制那些平时无法复制的内容,比如错误提示.菜单按钮文字等等,只需要按下快捷键就可以随意复制,俗称复制不可能. http://rammichael ...
- yii---对数组进行分页
很多时候,我们会对多个数据进行分页处理,例如我最近开发的一个功能,系统消息,系统消息的来源是多个表,而且多个表之间的数据没有任何关联,这个时候,需要对多个表进行查询,查询返回的数据进行分页,而且采用的 ...
- Spark2 Dataset去重、差集、交集
import org.apache.spark.sql.functions._ // 对整个DataFrame的数据去重 data.distinct() data.dropDuplicates() / ...
- C++ polymorphism Virtual Function 多态 虚函数
Polymorphism in C++ https://www.tutorialspoint.com/cplusplus/cpp_polymorphism.htm https://github.com ...
- Python开发【模块】:Requests(二)
Requests模块常见的4中post请求 HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: 1 ...
- 大数据智能SOC解决方案
- 为什么使用 Redis及其产品定位(转)
原文:http://www.infoq.com/cn/articles/tq-why-choose-redis 传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储 ...
- getParameter和getAttribute区别
(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter ...