zoukankan      html  css  js  c++  java
  • 黑马程序员--NSArray遍历



    NSArray *array = [NSArray arrayWithObjects: @“1”,@“2”,@“3”,nil];

    //array[i] = [array objectAtIndex:i]


    一.  for循环


    int count = array.count;//减少调用次数

    for( int i=0; i<count; i++){

        NSLog(@"%i-%@", i, array[i]);

    }

    二.  增强for

    for(id obj in array){

        NSLog(@"%@",elm);

    }

    三.  迭代器


    NSEnumerator *enumerator = [array objectEnumerator];

    NSArray *obj = nil;

    while(obj = [enumerator nextObject]){

        NSLog(@"obj=%@",obj);

    }


    四.  Block块遍历


    [array enumeratorObjectsUsingBlock:

    ^(NSArray *obj, NSUInteger idx, BOOL  *stop){

        NSLog(@"%i-%@",idx,elm);

        //若终断循环

        //*stop = YES;

    }];


    比如:


    内容只是重要的代码块,需要实现请将各代码块放在main函数中去运行


    NSArray *arr = @[@1,@2,@3,@4,@6];


    NSMutableArray *array = [NSMutableArray arrayWithArray:arr];

    NSNumber *value = @5;


    //现在要将@5插入,使array内部排序为@1,@2,@3,@4,@5,@6


    用四种方法实现和输出


    第一种:


    for(int i = 0; i<array.count;i++)

    {

        int elm = [array[i] intValue];

        int val = [value intValue];

        if (val < elm) {

            [array insertObject:value atIndex:i];

            break;

        }

    }


    for(int i = 0;i<array.count;i++)

    {

        NSLog(@"%@",array[i]);

    }


    第二种:


    for (id obj in array) {

        unsigned long i = [array indexOfObject:obj];

        if([value intValue]<[array[i] intValue])

        {

            [array insertObject:value atIndex:i];

            break;

        }

    }


    for (id obj in array) {

        NSLog(@"%@",obj);

    }


    第三种:


    NSEnumerator *enumerator = [array objectEnumerator];


    id obj = nil;


    while (obj = [enumerator nextObject]) {

        unsigned long i = [array indexOfObject:obj];

        if([value intValue]<[array[i] intValue])

        {

            [array insertObject:value atIndex:i];

            break;

        }

    }


    NSEnumerator *enumerator1 = [array objectEnumerator];

    obj = nil;

    while (obj = [enumerator1 nextObject]) {

        NSLog(@"%@",obj);

    }


    第四种:


    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop) {

        if([value intValue]<[array[idx] intValue])

        {

            [array insertObject:value atIndex:idx];

            *stop = YES;

        }

    }];


    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        NSLog(@"%lu - %@",idx,obj);

    }]; 

  • 相关阅读:
    C#之正则表达式、异常处理和委托与事件
    C#之interface接口
    C#之类与对象
    C#第一次的Hello World
    第一次用博客
    用Visual Studio 2012+Xamarin搭建C#开发Andriod的环境
    cocos2dx 3.x for lua "异步加载"实现过程
    cocos2dx 3.x c++代码打包给lua调用过程(mac)
    cocos2dx 3.x lua 网络加载并且保存资源(unix、linux)
    path类和directory类对文件的路径或目录进行操作
  • 原文地址:https://www.cnblogs.com/frozen1224/p/4242455.html
Copyright © 2011-2022 走看看