天天看点

OC学习日记07-数组数组

数组

OC学习日记07-数组数组

不可变数组

初始化创建一个数组(NSArray)对象

NSArray *array1=[[NSArray alloc]init];
        NSArray *array2=[NSArray array];
           

创建一个里面有一个元素的不可变数组

NSArray *array3=[NSArray arrayWithObject:@"Rick"];
           

创建里面有多个元素的不可变数组

NSArray *array4=[NSArray arrayWithObjects:@"Rick",@"Jack",@"Leo", nil];
           

nil 只能出现在数组的最后,不能在数组中间存放nil,因为nil是一个NSArray的数组结束标志。

新语法

NSArray *array5=@[@"array"];    
 NSArray *array6=@[@"Rick",@"Jack",@"Leo"];
 //[NSNumber numberWithInt:5];
           

根据一个数组产生一个新的数组

NSArray *array7=[NSArray arrayWithArray:array6];
NSLog(@"%@",array7);
           

从本地里面提取数组文件

NSArray *array8=[NSArray arrayWithContentsOfFile:@""];    
NSArray *array9=[NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"]];
           

求数组中元素个数

NSUInteger count=array6.count;
        //数组的操作
        //访问数组中的元素
        //访问array6中的第一个元素
        NSString *str1=[array6 objectAtIndex:];
           

遍历数组(for循环)

for (int i=; i<array6.count; i++) {
            NSLog(@"%@",[array6 objectAtIndex:i]);
             }
           

新语法访问数组中元素

NSString *str2=array6[];
        NSArray *array10=@[@3,@4,@5];


        //@3 [NSNumber numberWithIndex:]
        //[NSNumber numberWithIndex:YES];
        //@YES 就是OC中的布尔型的true;
           

通过数组中的元素查找下标

NSUInteger index= [array6 indexOfObject:@"Rick"];
        NSLog(@"index = %lu",index);
           

判断数组中是否存在某个元素

if ( [array6 containsObject:@"Rick"]) {
            NSLog(@"包含此元素");
        }
           

向不可变数组拼接一个元素

NSArray *newarray1=[array6 arrayByAddingObject:@"xiangjie"];
           

向不可变数组拼接一个数组,以及使用分隔符合并数组为字符串和将字符串拆分为数组。

NSArray *newarray2=[array6 arrayByAddingObjectsFromArray:array6];
NSString *string=[newarray2 componentsJoinedByString:@"~.~"];
NSLog(@"%@",string);       
NSArray *array11=@[@"123",@"456",@"789",@"000"];
NSString *string2=[array11 componentsJoinedByString:@"-"];
NSLog(@"%@",string2);        
NSArray *array12=[string2 componentsSeparatedByString:@"-"];
NSLog(@"%@",array12); 
NSString *string3=[array12 componentsJoinedByString:@""];
        NSLog(@"%@",string3);
           

使用NSArray 注意事项:

1.数组越界的问题
    2.数组最后一个结束标志为nil,中间不能放nil
    3.数组会对加入其中的对象自动把引用加一,
           

可变数组

可变数组的定义:

可变数组 NSMutableArray ,它是 NSArray 的子类
           

初始化方法

初始化一个空数组

NSMutableArray *array1 =[NSMutableArray array];
           

初始化一个里面有一个元素的数组

NSMutableArray *mArray2=[NSMutableArray arrayWithObject:@"1"];
           

创建一个里面有多个元素的数组

NSMutableArray *mArray3=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
           

根据另一个数组创建新的数组

NSMutableArray *mArray4=[NSMutableArray arrayWithArray:mArray3];
           

可变数组独有的初始化方法

NSMutableArray *mArray5=[NSMutableArray arrayWithCapacity:];
           

引入文件和网页

NSMutableArray *mArray6 =[NSMutableArray arrayWithContentsOfFile:@""];
        NSMutableArray *mArray7 =[NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@"www.baidu.com"]];
           

增加

在数组末尾添加一个元素

[mArray3 addObject:@"5"];
     NSLog(@"%@",mArray3);
           

在数组指定位置插入一个元素

[mArray3 insertObject:@"4" atIndex:3];
[mArray3 replaceObjectAtIndex:1 withObject:@"Rick"];
           

交换

[mArray3 exchangeObjectAtIndex:2 withObjectAtIndex:3];

NSLog(@"%@",mArray3);
           

删除

删除指定元素

删除指定位置上的元素

[mArray3 removeObjectAtIndex:1];

        NSLog(@"%@",mArray3);
           

删除最后一个元素

删除数组内全部元素

NSMutableArray *newArray=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil];

        for (int i=; i<newArray.count; i++) {
            NSLog(@"%@",newArray[i]);
        }
           
NSLog(@"---------");

    //快速枚举  不知道类型时可以把这个类型改成id
    for(NSString *element in newArray){
        NSLog(@"element = %@",element);
    }


    //使用系统提供的枚举类型 NSEnumerator
    //创建一个枚举器
    NSEnumerator *enumerator = [newArray objectEnumerator];
    id obj;
    while (obj =[enumerator nextObject]){
       // [newArray addObject:@"5"];
        NSLog(@"obj=%@\n",obj);
    }

    /*
     使用快速枚举或枚举器遍历时,不要添加或者删除数组元素,否则运行时就会崩溃
     */
           
OC学习日记07-数组数组