美文网首页
OC基础 – 数组的常见使用

OC基础 – 数组的常见使用

作者: ShIwEn9 | 来源:发表于2019-01-21 11:33 被阅读0次

    吐槽:苦逼的实习生活

    知识点:
    一、NSArray:不可变数组及其使用
    二、NSMutableArray:可变数组及其使用

    1.数组的基本用法
    2.数组的遍历
    3.数组的其他用法

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

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

    3. 存储的内存是连续的

    二、不可变数组
    1. 定义数组
    //定义一个空数组
    NSArray *array1 = [NSArray array] ;
    array1 = @[];//空数组
    //通过指定对象创建数组
    array1 = [[NSArray alloc]initWithObjects:@"123",@"hello",@"ya",@"yuan",@"zi", nil] ;
    //通过简单的方式创建数组
    array1 = @[@"123",@"hello",@"ya",@"yuan",@"zi"] ;
    
    1. 数组的长度
    NSInteger count = array1.count ;
    NSLog(@"%ld",count) ;
    
    1. 判断当前的数组中是否包含对应的对象 containsObject
    BOOL isHave = [array1 containsObject:@"123"] ;
    if (isHave) {
           NSLog(@"存在") ;
        }else{
           NSLog(@"不存在") ;
           }
     //方法二:
     /*
        [A isKindOfClass:B],判断A类是否是B的子类或者本类。
        [A isMemberOfClass:B],判断A类是否是B类(不包括子类)
    */
    
    1. 得到数组中最后一个对象
    NSString *str = [array1 lastObject];
    NSLog(@"str=%@",str) ;
    
    1. 得到第一个对象
    NSString *str1 = [array1 firstObject];
    NSLog(@"str1=%@",str1) ;
    
    1. 取出数组的指定的对象 (下标要小于数组的count)
    NSString *str2 = [array1 objectAtIndex:3] ;
    NSLog(@"str2=%@",str2) ;
    
    1. 得到指定元素在数组中的位置 如果元素不存在则打印-1值
    int index = (int)[array1 indexOfObject:@"yayuanzi"] ;
    int index1 = (int)[array1 indexOfObject:@"ya"] ;
    NSLog(@"index=%d,index=%d",index,index1) ;
    
    1. 数组的遍历–> 查找数组中的每一个元素
    • 8.1 基本的for循环通过下标逐一查找
    for (int i = 0; i < array1.count; i++) {
        NSString *str3 = [array1 objectAtIndex:i] ;
        NSLog(@"str3 = %@",str3) ;
       }
    
    • 8.2 for in 快速遍历 注意:需要让数组中的元素的类型保持一致
    for (NSString *str4 in array1) {
                NSLog(@"str4 = %@",str4) ;
            }
    
    1. 把数组中所有的元素转化为字符串
    [array1 componentsJoinedByString:@“两个元素之间添加的字符串”];
    
    1. 取出数组中的一部分元素
    //只初始化一个索引
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:2];
     
    //下标为1,长度为2
    NSRange range = NSMakeRange(0, 3);
     
    //构造一个范围的索引
    indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
     
    [array objectsAtIndexes:indexSet];
    
    1. 把数组写入文件
    [array1 writeToFile:path atomically:YES];
    
    1. 从文件中读取数组
    [NSArray arrayWithContentsOfFile:path];
    
    三、可变数组

    当数据不确定数量或者动态变化的时候就需要使用到可变数组

    1. 创建空的可变数组
    NSMutableArray *mutArray = [[NSMutableArray alloc]init] ;
    NSMutableArray *mutArray1 = [NSMutableArray array];
    
    1. 创建有对象的数组
    //初始化只能有一个对象
    NSMutableArray arrayWithObject:@"111"];
     
    //初始化只能有多个对象
    [NSMutableArray arrayWithObjects:@"1111",@"222",@"333",@"4444", nil];
    [[NSMutableArray alloc] initWithObjects:<#(id), ...#>, nil];
    
    1. 添加对象 注意下面两种的区别
    NSMutableArray *mutArray = [[NSMutableArray alloc]init] ;
    Person *personName1 = [[Person alloc]initWithName:@"wuhu"] ;
    Person *personName2 = [[Person alloc]initWithName:@"yayuanzi"] ;
    Person *personName3 = [[Person alloc]initWithName:@"company"] ;
    NSArray *arr = [NSArray arrayWithObjects:personName2,personName3, nil] ;
    //1.添加对象   注意下面两种的区别
    [mutArray addObject:personName1] ;
    NSLog(@"mutArray = %@",mutArray) ;
    [mutArray addObject:arr] ; //将arr作为一个对象整体添加到数组上
    NSLog(@"mutArray = %@",mutArray) ;
    [mutArray addObjectsFromArray:arr] ;  //将arr中的对象,一个一个的加到可变数组中
    NSLog(@"mutArray = %@",mutArray) ;
    
    1. 交换元素的位置根据下标
    [mutArray exchangeObjectAtIndex:1 withObjectAtIndex:2] ;
    
    1. 删除元素
    //4.1删除所有的元素
    [mutArray removeAllObjects] ;
    //4.2删除最后一个元素
    [mutArray removeLastObject] ;
    //4.3删除指定的元素
    [mutArray removeObject:personName3] ;
    //4.4根据下标来删除  :注意元素内元素的个数下标问题会导致奔溃
    [mutArray removeObjectAtIndex:2] ;
    
    参考文章:https://www.cnblogs.com/fcug/p/6279596.html

    相关文章

      网友评论

          本文标题:OC基础 – 数组的常见使用

          本文链接:https://www.haomeiwen.com/subject/tnaqjqtx.html