iOS NSArray NSMutableArray 基础 创建、添加、删除、替换

一、数组的简单介绍

1.数组是一个对象,是任意类型对象地址的集合,OC的数组可以存储不同类型的对象

2.OC的数组只能存储对象,不能存放 简单的数据类型(int, float, NSInteger…)除非通过一些手段把简单数据类型变成对象。在C语言中的数组可以保存任意类型的数据。

3.存储的内存是连续的

 

NSArray

复制代码
- (void)testNSArray {
    //定义一个空数组
    NSArray *array = [NSArray array];
    //空数组
    array = @[];
    //通过指定对象创建数组
    array = [[NSArray alloc]initWithObjects:@"AAA",@"911",@"嗯嗯",@"abc",@"cc", nil];
    //通过简单的方式创建数组
    array = @[@"AAA",@"911",@"嗯嗯",@"abc",@"cc"];
    
    // 得到数组中第一个对象
    NSString *first = [array firstObject];
    // 得到数组中最后一个对象
    NSString *last = [array lastObject];
    
    // 取出数组的指定的对象 (下标要小于数组的count)
    NSString *str = [array objectAtIndex:3];
    NSString *str1 = array[3];  // 第二种写法
    
    
    // 得到指定元素在数组中的位置  如果元素不存在则打印-1值
    int index = (int)[array indexOfObject:@"911"];
    int index1 = (int)[array indexOfObject:@"cc"];
    NSLog(@"index=%d,index=%d",index,index1) ;
    
    
    
    // 判断当前的数组中是否包含对应的对象  containsObject
    BOOL isHave = [array containsObject:@"abc"] ;
    if (isHave) {
        NSLog(@"存在") ;
    }else{
        NSLog(@"不存在") ;
    }
    
    
    //  [A isKindOfClass:B],判断A类是否是B的子类或者本类。
    //  [A isMemberOfClass:B],判断A类是否是B类(不包括子类)
    
}
复制代码

 

 

NSMutableArray

复制代码
- (void)testNSMutableArray {
    //创建并设定数组元素个数
    NSMutableArray *arr1=[NSMutableArray arrayWithCapacity:12];
    //复制数组
    NSArray *arr2=@[@"Jan",@"Feb",@"Mar",@"Apr",@"May",@"Jun",@"Jul",@"Aug",@"Sep",@"Oct",@"Nov",@"Dec"];
    NSMutableArray *arr3=[NSMutableArray arrayWithArray:arr2];
    //向数组中添加一个元素
    [arr3 addObject:@"one"];
    //根据指定下标插入元素
    [arr3 insertObject:@"two" atIndex:6];
    //删除最后一个元素
    [arr3 removeLastObject];
    //根据指定下标删除元素
    [arr3 removeObjectAtIndex:3];
    //根据指定对象删除元素(若未找到返回NSNotfind
    [arr3 removeObject:@"three"];
    //替换指定下标的元素
    [arr3 replaceObjectAtIndex:3 withObject:@"four"];
    //删除全部元素
    [arr3 removeAllObjects];
}
复制代码

 

posted @   阿凡同学  阅读(1691)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示