【总结】 - NSArray的遍历与排序

目录

遍历方法

普通遍历

普通遍历与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的装满对象的迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值