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);

    }]; 

  • 相关阅读:
    OpenStack报错:MessagingTimeout: Timed out waiting for a reply to message ID
    Missing value auth-url required for auth plugin password
    解决eth0网卡无法自动加载的问题
    Linux中一个网卡含有多个IP,将从IP升级为主IP的方法
    Ubuntu系统上双节点部署OpenStack
    Ubuntu系统上All-in-one部署OpenStack
    ubuntu系统中添加DNS服务器地址后诡异消失的解决办法
    解决Ubuntu14.04安装Chrome浏览器打不开的问题
    搭建HBase的本地模式、伪分布式、全分布式和HA模式
    PostgreSQL 与 MySQL 相比,优势何在?【转】
  • 原文地址:https://www.cnblogs.com/frozen1224/p/4242455.html
Copyright © 2011-2022 走看看