目录
遍历方法
普通遍历
普通遍历与C中的数组便利方式一样,使用for语句对数组元素逐一取出。
NSArray *array = [NSArray arrayWithObjects:@"12",@"21",@"2121",nil];
NSUInteger count = [array count];
for(int i = 0;i < count;i++)
{
id obj = [array objectAtIndex:count];
NSLog(@"%@",obj);
}
快速遍历
for (id obj in array)
快速遍历和.语法一样,是利用了编译器特性而进行的书写简化
block遍历
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@”%@”,obj);
}];
相较于前两个方法,block遍历显然更“面向对象”。
迭代器遍历
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
//把数组装入一个迭代器中
NSEnumerator *enumerator = [array objectEnumerator];
//逐一遍历
id obj = nil;
while (obj = [enumerator nextObject]) {
NSLog(@"obj=%@", obj);
}
四种方法比较
如果用数糖豆来类比:
第一种方法是手动数糖豆,从盒子中将糖豆一颗一颗拿出来,数一数
第二种方法是雇了一个工人,让它帮你手动数糖豆
第三种方法,是让糖豆自己数自己,然后把结果告诉你
第四种方法,是把糖豆全部倒入一个“数糖豆机”,然后,让机器给你数
排序方法
有一个排序规则制定委员会:NSSortDescriptor
可以委托这个委员会派一个“排序仲裁员”来帮我们的数组排序
NSSortDescriptor *someOne = [NSSortDescripior sortDescriptorWithKey:@”按哪个实例变量来排序” ascending:YES //升序排序
排序以后生成一个新的数组
NSArray *newArray = [array sortedArrayUsingDescriptors:someOne]
让数组排序,通过排序仲裁员“someOne”
总结
通过这个例子,我们更加可以看出:
1. 想让对象或类返回一个相同类型的对象,要用“让谁干什么”这种句式
2. 想让对象或类返回一个不同类型的对象,要用“要谁的什么”这种句式
如:
NSArray *newArray = [array sortedArrayUsingDescriptors:someOne]
返回一个相同类型的对象,用“让array排序(用someOne仲裁员)”句式NSEnumerator *enumerator = [array objectEnumerator];
要array的装满对象的迭代器