objective-c 学习 数组

概述:

  1. OC里面的数组是一种线性结构数据类型,在foundation框架之内。分为可变数组(NSArray)与不可变数组(NSMultiArray),其中MultiArray 继承自 NSArray  ,所以NSArray的各种方法,NSMultiArray一样可以使用。
  2. 数组可以通过下标索引到相应的对象。
  3. NSarray和NSmultiArray里面存储的内容只能是——对象(类的实例) 。所以基本数据类型不能直接存储进去,可以使用NSValue或者NSNumber封装存储进去

数组数据模型:

  1. OC里面的数组是一种线性的数据结构,它的数据原型是线性表.下图展示了线性表的抽象数据类型(定义+操作)
  2. 操作有8种:大约是:增删查改 始数找空
  3. 技术分享技术分享

数组的常见操作

IOS中的数组,是线性表这个抽象数据结构的一种具象的实现,下面就展示一下苹果公司的程序员们如何实现这个线性结构的。

1初始化:(初始化操作,建立一个数组对象,并且赋值)

1 类方法初始化:(这里注意一下苹果的命名规范,类方法一般是 classWith ,命名规范其实很重要),这里有四种情况:分别是一个对象,多个对象,使用数组,从文件 初始化

        // 类方法命名规范
        // 初始化一个  因为是不可变的 所以实用性不强
        NSArray *arr1=[NSArray arrayWithObject:@"hello"];
        
        //多个以nil作为数组的结束
        NSArray *arr2=[NSArray arrayWithObjects:@"1",@"2", nil];
        // 元素指向了同一个位置
        NSArray *arr3=[NSArray arrayWithArray:arr2];
        // 从文件初始化数组
//        NSArray *arr3=[NSArray arrayWithContentsOfURL:<#(NSURL *)#>];


2 实例方法初始化:

NSArray *arr4=[[NSArray alloc] initWithArray:arr1];

3 可变数组的初始化

        // 添加了一个空的数组
        NSMutableArray *mulArray1=[NSMutableArray array];
        // 初始化,加上容量
        NSMutableArray *mulArray=[NSMutableArray arrayWithCapacity:1];


2 数组长度:(返回数组元素个数)

        // 元素个数
        int count=[arr2 count];

3 查:将数组第i个对象返回,

        // 访问哪个元素
        NSString *string1=[arr1 objectAtIndex:0];

        // 查找最后一个对象
        NSLog(@"%@",[arr2 lastObject]);

遍历

        // 快速遍历
        for(/*或者ID*/NSString *string in mulArray)
        {
            
        }


4 找:根据对象,查找数组,如果存在相同的对象,返回序号,否则返回false

// 查询对象位置
        int objIndex=[arr2 indexOfObject:@"2"];

        // 判断是否有这个元素  这个是判断有没有
        if(![arr2 containsObject:@"a"])
           {
               NSLog(@"没有");
           }

5 增:在第i个位置增加元素

        // 追加对象,返回新的数组
        NSArray *arr11=[arr1 arrayByAddingObject:@"haha"];

不可变数组无法对数组进行修改,这里的操作都是可变数组的,
        // 添加对象
        for(int i=0;i<20;i++)
        {
            [mulArray addObject:@"aaa"];
            [mulArray addObject:@"bbb"];
        }

        // 根据索引位置添加一个元素
        [mulArray insertObject:@"bbb" atIndex:1];


6 删:删除指定位置元素


        // 删除
        // 删除最后一个
        [mulArray removeLastObject];
        // 删除相应元素
        [mulArray removeObject:@"aaa"];
        // 指定坐标删除
        [mulArray removeObjectAtIndex:3];
        
        // 根据数组来删除
        [mulArray removeObjectsInArray:arr1];




7 改:修改指定位置元素(就是替换)

        // 替换
        [mulArray replaceObjectAtIndex:0 withObject:@"1"];


8 空: 判空,返回true false 

IOS中没有数组判空操作,你可以用count==0来判断


欢迎转载,转载请注明出处:http://blog.csdn.net/zhenggaoxing/article/details/43559869

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。