OC中集合类对象的枚举和数组的排序

集合类(数组,字典,集合)的枚举

枚举器: ENumerator :一个工具类,功能是一一列举容器类中存储的元素,枚举器不需要自己去创建对象,直接获取容器类对象创建的相应的枚举器

比如:NSArray *array = @[ob1,ob2,ob3];  Enumerator *enum = [array objectEnumerator]  即获取了不可变数组array的枚举器

然后与while循环联合使用便可枚举集合的所有元素: id object = nil;  while(object

= [enum nextObject]){  NSLog{@"object = %@"}, object };

将array中的元素一一打印出来

获取数组的反向枚举器  enum = [array reverseObjectEnumerator];

快速枚举  for in  :本质是对枚举器进行了封装

格式:  for(元素对象的类型 元素对象 in 被枚举集合)  { 操作... };

举例: for (id object in array)  {  NSLog:(@"%@",object);  };   将array中的各个对象元素一一打印出来

字典容器获取枚举器的方法: NSDictionary *dict = @{ob1,ob2,ob3};   enum = [dict

keyEnumerator ;]  即:是要获得字典中所有key值的枚举器,再通过对key值的枚举从而可以对         每个

key值对应的value进行枚举 .

数组集合的排序

1.方法排序:(如使用冒泡排序)通过定义数组中对象的属性比较方法:compareProperty()和数组的交换元素方法:exchangeObjectAtIndex:m withObjectAtIndex:n 来实现数组的排序

方法选择器@selector的使用可以简化代码  属性值的比较方法定义格式:    -(NSComparisonResult)compareProperty:(id)other {.....}

举例: newArray = [array sortedArrayUsingSelector:@selector(compareProperty)];

2.排序描述类排序:

排序描述类对象的创建: NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:ob ascending:BOOL];

key表示排序主键,即对象的属性名称  ascending:YES 表示升序排序,反之NO表示降序

举例:对array数组中的thisProperty属性进行排序:

NSSortDescriptor *arrayDesc = [[NSSortDescriptor alloc] initWithKey:thisProperty ascending:YES];   newArray = [array sortedArrayUsingDescriptors:@[arraytDesc]];

如果sortUsingDescriptors方法的参数中有多个排序描述对象时,首先按第一个描述排序,遇到相同属性则按第二个进行排序,依次类推

如:[array sortedArrayUsingDescriptors@[arrayDesc1,arrayDesc2...];

排序描述类排序的好处:可以同时按多种方式排序,而且不用手动写比较属性方法的实现

3.block方法排序:  举例: array sortedArrayUsingComparator:^NSComparisonResult(id ob1, id ob2){......}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,895评论 6 13
  • A ------ >遍历概念 1、集合 ( collection ) OC 中提供的容器 : 数组,字典,集合 2...
    b8028f13eaa2阅读 3,945评论 0 0
  • 面向对象三大支柱封装:就是把相关的数据和代码结合成一个有机的整体,形成数据和操作代码的封装体,对外只提供一个可以控...
    WangDavid阅读 5,840评论 0 2
  • 1. 很晚了,芥末给我发来一条微信: “他还是要跟我分手,这一次,可能是真的。” 以前芥末的分手就像“狼来了”,每...
    安乔Lily阅读 7,982评论 40 81
  • “元认知能力,对自己的思考过程的认知与理解。” 许多时候自己并未认识到自己的思考,特别是自己将计划的事情不断往向拖...
    致远007阅读 2,985评论 0 1