Object-C 中的可变数组和不可变数组

Object-C 中的可变数组和不可变数组

NSArray / NSMutableArray

在OC中,我们用 ‘NSArray’ 类 和 ‘NSMutableArray’ 类来表示数组,其中, ‘NSArray’ 类 是 ‘NSMutableArray’ 类的父类。在OC中,我们数组是有序的’对象’的集合,即我们的数组只能存储’对象’。在OC中我们的数组中元素类型不能是’int’,’float’,’CGPoint’等类型。

NSArray(不可变数组)

1.初始化方法

//创建一个空的数组
        NSArray *array1 = [[NSArray alloc]init];
        NSArray *array2 = [NSArray array];

        //创建一个里面只有一个元素的不可变数组
        NSArray *array3 = [NSArray arrayWithObject:@"zhou"];

        //创建一个里面有多个元素的不可变数组
        NSArray *array4 = [NSArray arrayWithObjects:@"zhou",@"xinzhen",@"panzhi",@"gugeng" ,nil];

        //新语法
        NSArray *array5 = @[@"zhou"];
        NSArray *array6 = @[@"zhou",@"xinzhen",@"panzhi",@"gugeng"];

        //根据另一数组产生新数组
        NSArray *array7 = [NSArray arrayWithArray:array6];

        //从本地文件中读取数组
        NSArray *array8 = [NSArray arrayWithContentsOfFile:@""];

        //从网络文件中读取数组
        NSArray *array9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];

2.数组元素个数

  NSUInteger count = array6.count;

3.访问数组元素

      //访问array6中的第一个元素
        NSArray *str = [array6 objectAtIndex:0];
        //新语法访问数组中的元素
        NSString *str2 = array6[0];
        //通过数组中的元素找下标
           NSUInteger index = [array6 indexOfObject:@"zhou"];
        NSLog(@"%lu",index);

4.数组中是否存在某个元素

BOOL flag = [array6 containsObject:@"zhou"];

5.向不可变数组中增加一个元素或者,生成一个新的数组

NSArray *newArray1 = [array6 arrayByAddingObject:@"fangjian"];

        NSArray *newArray2 = [array6 arrayByAddingObjectsFromArray:array6];
NSMutableArray(可变数组)

‘NSMutableArray’为’NSArray’的子类,即上述使用API对于可变数组来讲都适用
1.初始化方法

 //初始化一个空的可变数组
        NSMutableArray *mArray1 = [NSMutableArray array];
        NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
        NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2", @"3",@"4",nil];
        NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray2];
        //可变数组独有的初始化方法
        NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];

        NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
        NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
 //增加
        //在数组的末尾增加一个元素
        [mArray3 addObject:@"5"];

        [mArray3 insertObject:@"vin" atIndex:2];

        //替换,将数组指定位置上的元素替换成用户想要元素
        [mArray3 replaceObjectAtIndex:2 withObject:@"sb"];

        //交换,将数组指定位置上的两个元素交换位置
        [mArray3 exchangeObjectAtIndex:1 withObjectAtIndex:4];

        //删除
        //删除指定元素
        [mArray3 removeObject:@"1"];

        //删除指定位置上的元素
        [mArray3 removeObjectAtIndex:2];

        //删除数组中最后一个元素
        [mArray3 removeLastObject];

        //删除数组中所有元素
        [mArray3 removeAllObjects];

//数组的遍历
//快速枚举

    NSMutableArray *marray =[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
        for (NSString *element in marray)
        {

            NSLog(@"element = %@",element);
        }

        //使用系统提供的枚举类 NSEnumerator
        NSEnumerator *enumerator = [marray objectEnumerator];
        NSString *ele ;
        while (ele = [enumerator nextObject])
        {
            NSLog(@"%@",ele);
        }

        //当我们在遍历可变数组时不可修改数组 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值