黑马程序员技术交流社区

标题: Foundation 框架 关于NSArray 与 NSMutableArray 的总结 [打印本页]

作者: Jack-xie    时间: 2014-10-10 21:02
标题: Foundation 框架 关于NSArray 与 NSMutableArray 的总结
     NSArray : 不可变数组
     NSMutableArray : 可变数组
     OC数组不能存放nil值
     OC数组只能存放OC对象、不能存放非OC对象类型,比如int\struct\enum……等
     
    //1.NSArray 的创建
    NSArray *array1 = [NSArray array];//这个array1永远是空数组
    NSArray *array2 = [NSArray arrayWithObject:@"Jack"];
    NSArray *array3 = [NSArray arrayWithObjects:@"Jack",@"Julia",@"Rose",@"12345",nil];// nil是数组元素结束的标记
    NSArray *array4 = @[@"Jack",@"Julia",@"Rose",@"12345"];// 快速创建一个NSArray对象
    // *特别注意:@[] 只能创建不可变数组NSArray
   
    //2.NSArray 的元素个数 及 元素的访问
   
    NSLog(@"%@",array4);// NSArray 全部元素的访问
    NSLog(@"%ld",array4.count);// NSArray 元素个数的访问
    NSLog(@"%@",array4[1]);// NSArray 中元素的快速访问
    NSLog(@"%@",[array4 objectAtIndex:1]);// NSArray 中元素一般的访问
   
    //3.遍历数组
    Person *Person1 = [[Person alloc] init];//创建一个Person对象
    NSArray *arr1 = @[Person1,@"rose",@"Jack",@"Julia"];// 数组可以存储对象
    // 第一种遍历: for循环
    for (int i=0; i<arr1.count; i++) {
        NSLog(@"%@",arr1[i]);
    }
    // 第二种遍历:id obj 代表着数组中的每一个元素
    for (id obj in arr1) {
        NSLog(@"%@",obj);
    }
    // 第三种遍历:在第二种遍历的基础上访问元素,同时访问每个元素对应的下标
    for (id obj in arr1) {
        // 找出obj元素在数组中的位置 元素的第一个下标为 0  i = 0;
        NSUInteger i = [arr1 indexOfObject:obj];
        NSLog(@"%ld--%@",i,obj);
        i++;
        // 加条件 当i 下标等于一个值时,跳出循环
        if (i==2) {
            break;
        }
    }
    // 第四种遍历:使用block遍历每一个元素
    // 这个方法对每一个元素都调用一次block,有obj,也有index,而且还可以设置stop随时终止遍历
    [arr1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"%ld - %@",idx,obj);
        // 加条件 下标等于一个值时,停止遍历
        if (idx == 0) {
            *stop = YES;// 停止遍历
        }
    }];
   
    // NSMutableArray : 可变数组的基本使用
    // 创建可变数组
    NSMutableArray *ma1 =  [NSMutableArray arrayWithObjects:@"Jack",@"Julia",@"Rose",nil];
   
    [ma1 addObject:[[Person alloc] init]];// 添加元素 往可变数组中添加一个Person对象
    [ma1 addObject:@"Peter"];// 添加元素 往可变数组中添加一个字符串
    [ma1 insertObject:@"Jim" atIndex:5];// 添加元素 在指定的下标位置添加一个字符串
   
    [ma1 removeObject:@"Rose"];// 删除指定的对象
    [ma1 removeAllObjects];// 删除所有的对象
   
    [ma1 replaceObjectAtIndex:3 withObject:@"100"];
    [ma1 exchangeObjectAtIndex:1 withObjectAtIndex:3];
   
    NSLog(@"%@",ma1);// 访问数组元素
    NSLog(@"%ld",ma1.count);// 打印数组中总元素的个数
   
作者: 米匠    时间: 2014-10-11 09:03
收藏了。。。。
作者: gongxia20    时间: 2014-10-11 10:35
好实用!! 学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2