码迷,mamicode.com
首页 > 其他好文 > 详细

【Objective-C学习记录】第二十四天

时间:2015-12-25 23:38:34      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

集合的遍历

1.for循环遍历

2.枚举器遍历

1 NSArray *enumArray = @[@"CM", @"PL", @"Lina", @"NEC"];
2 //创建一个枚举器,依附于数组
3 NSEnumerator *rator = [enumArray objectEnumerator];
4 //创建一个对象
5 id object = nil;
6 while (object = [rator nextObject])
7 {
8     NSLog(@"%@", object);
9 }

也可以反向枚举

1 //反向枚举
2     NSEnumerator *reverseRator = [enumArray reverseObjectEnumerator];
3     while (object = [reverseRator nextObject])
4     {
5         NSLog(@"%@", object);
6     }

利用枚举器遍历字典

1     rator = [dict objectEnumerator];
2     while (object = [rator nextObject])
3     {
4         NSLog(@"%@", object);
5     }

3.forin循环

forin其实是基于枚举器遍历进行的一次封装,结构为:

for ( type *object in collection)

{

       statements

}

其中collection是需要遍历的容器,object指代collection每一次遍历的元素,如果collection里的对象都是同一类型,那么object的类型可以指定,statements为循环体。比如:

1 for (NSString *str in array)
2 {
3      NSLog("%@", str);  
4 }

集合的排序

1.NSSortDescriptor

 


1 /**
2 *  使用NSSortDescriptor进行数组排序有三步
3 *  1.创建一个用来排序的数组
4 *  2.创建一个排序条件,初始化中需要指定按照数组中对象的什么属性值排序,升序或者降序
5 *  3.数组根据排序条件进行排序,得到一个排序之后的数组(如果是可变数组,不会生成新数组,还是本身)
6 */
1 NSArray *array = @[@"PA", @"AM", @"Luna", @"DR", @"MED"];
2 NSSortDescriptor *des = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];
3 NSLog(@"%@", [array sortedArrayUsingDescriptors:@[des]]);

 

首先初始化一个NSSortDescriptor对象,初始化方法initWithKey:有两个参数。第一个代表根据什么排序,在这里使用array自身,即对array内的元素进行排序,如果array里的每个元素都是一个对象,而这个对象有某个属性,这时就可以将属性名作为参数,即可根据属性名进行排序;第二个参数表示升序或者降序。

2.sortedArrayUsingSelector:@selector()

1 NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
2 NSLog(@"%@", newArray);  

在@selector里填写方法名,类似C语言里的函数指针,并且方法需要是如下结构

- (NSComparisionResult) 方法名:参数

这个方法是指定根据什么规则进行排序。比如这里传入的是系统方法compare:。compare方法的返回值就是NSComparisionResult类型的,而这种方式默认是升序排列,如果想进行降序排序的话,可以这样去定义一个方法:

 1 - (NSComparisonResult)compareDescending:(NSString *)str
 2 {
 3     NSComparisonResult result = [self compare:str];
 4     if (result < 0)
 5     {
 6         return 1;
 7     }
 8     else if (result > 0)
 9     {
10         return -1;
11     }
12     else
13     {
14         return 0;
15     }      
16 }

并把该方法名compareDescending:作为@selector的参数即可完成降序排序。

【Objective-C学习记录】第二十四天

标签:

原文地址:http://www.cnblogs.com/shvier/p/5077159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!