NSArray 与 NSMutableArray 常用方法


    /*

     NSArray :

     +(+(id)arrayWithObjects:obj1,obj2,...nil               创建一个新的数组,obj1,obj2......是他的元素对象,以nil对象结尾

     -(BOOL)containsObject:obj                              确定数组中是否包含对象obj

     -(NSUInteger)count                                     返回数组元素个数

     -(NSUInteger)indexOfObject:obj                         第一个包含obj元素的索引号

     -(id)objectAtIndex;i                                   返回存储在位置 i 的对象

     -(void)makeObjectsPerformSelector:(SEL)selector        selector 只是的消息发送给数组中的每个元素

     -(NSArray*)sortedArrayUsingSelector:(SEL)selector      根据selector 指示的比较方法对数组进行排序

     -(BOOL)writeToFile:path atomically:(BOOL)flag          将数组写入指定的文件中,如果 flag YES,则需要先创建一个临时文件

     

     

     NSMutableArray :

     +array                                                 创建一个空数组

     +(id)arrayWithCapacity:size                            创建一个数组,指定容量为size

     -(id)initWithCapacity:size                             初始化一个新分配的数组,指定容量为size

     -(void)addObject:obj                                   将对象obj添加到数组末尾

     -(void)insertObject:obj atIndex:i                      将对象 obj 插入到索引为 i 的位置

     -(void)replaceObject:obj atIndex:i                     将数组中索引为 i 处的元素用obj 置换

     -(void)removeObject:obj                                从数组中删除所有是 obj 的对象

     -(void)removeObjectAtIndex:i                           从数组中删除索引为 i 的对像

     -(void)sortUsingSelector:(SEL)selector                 selector 只是的比较方法将数组排序

     */

    

    

    

    // 初始化

    {

        NSArray *arr = @[@0, @1, @2, @3, @4, @5, @6, @7, @8, @9];

        // mutableCopy 是为了能转成 mutable

        NSMutableArray *mutableArray = [@[@1,@2,@4,@6,@3,@5,@8,@7,@9,@0,[NSNull null]] mutableCopy];

    }

    


    {

        // 定义容量为 10,可继续加长

        NSMutableArray *mutableArray0 = [[NSMutableArray alloc] initWithCapacity:10];

        NSArray        *array1 = [[NSArray alloc] initWithObjects:@"aa",@"bb",@"c", nil];

        

        // 插入到指定 索引的前面

        [mutableArray0 insertObject:@"this is inerted object" atIndex:0];

        // 替换

        [mutableArray0 replaceObjectAtIndex:0 withObject:@"new obj"];

        

        // 打印第一个相同的元素:

        NSLog(@"the object  is:%@",[mutableArray0 firstObjectCommonWithArray:array1]);

        // 打印最后一个元素:

        NSLog(@"the object  is:%@",[mutableArray0 lastObject]);

        

        //判断数组是否包含某个对象

        if ([mutableArray0 containsObject:@"selectiont"])

        {

            NSLog(@"the object selection is contained in array");

        }

        else

        {

            NSLog(@"not contain");

        }

        

        // 让数组里面的所有对象都调用 test 方法

        [mutableArray0 makeObjectsPerformSelector:@selector(test1)];

        // 让数组里面的所有对象都调用 test 方法 且传参数 @"fs"

        [mutableArray0 makeObjectsPerformSelector:@selector(text2) withObject:@"fs"];

        

        //获取元素索引

        NSLog(@"the idx is:%ld",[mutableArray0 indexOfObject:@"b"]);

    }

    

    {

        //删除数组元素

        NSMutableArray *tempArray=[[NSMutableArray alloc]initWithObjects:@"b",@"a",@"r",nil];

        NSArray *newArray = [[NSArray alloc] initWithObjects:@"a",@"tow",@"on",@"onee", nil];

        // 从指定索引移除

        [tempArray removeObjectAtIndex:0];

        // 移除所有元素

        [tempArray removeAllObjects];

        // 移除最后那个元素

        [tempArray removeLastObject];

        // 移除指定数组中元素

        [tempArray removeObjectsInArray:newArray];

    }

    

    {

        // NSMutableIndexSet 可以用来存储一系列的索引值区间

        NSMutableIndexSet *idxSet = [[NSMutableIndexSet alloc] init];

        // 添加 5 2

        [idxSet addIndex:5];

        [idxSet addIndex:2];

        // 添加 7 - 10

        [idxSet addIndexesInRange:NSMakeRange(7, 4)];

        [idxSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {

            NSLog(@"idxSet : %lu", (unsigned long)idx);

        }];

        

        NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12", nil];

        

        // 从所选择的索引中移除

        [mutableArray removeObjectsAtIndexes:idxSet];

        

        NSLog(@"mutableArray : %@",mutableArray);

    }


    {

        NSArray *array;

        // 用枚举器:

        // 获取数组的迭代器

        NSEnumerator *enumerator = [array objectEnumerator];

        // 反序迭代器 ,从尾部开始遍历元素

        // NSEnumerator *enumerator = [array reverseObjectEnumerator];

        // 取出所有没有被遍历过的对象,获取完之后 enumerator 里的元素也没了

        NSArray *arr = [enumerator allObjects];

        NSLog(@"arr : %@",arr);

        // 获取下一个需要遍历的元素

        id obj;

        // 遍历完之后 enumerator 里面的元素就为空了

        while (obj =[enumerator nextObject]) {

            NSLog(@"obj : %@",obj);

        }

        

        // 枚举所有元素, block 遍历

        [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

            // idx 为索引值 obj 是索引对象

            NSLog(@"idx : %li--%@",idx,obj);

            // 控制只能输出 n

            if(idx == 1)

            {

                // *stop = YES; 代表停止遍历

                *stop =YES;

            }

        }];

    }

    

    {

        NSString *str1 = @"1,2,3,4,5,6,7,8,9,";

        // 将字符串按照某个字符串分割成数组

        NSArray *arr2 = [str1 componentsSeparatedByString:@","];

        // 将数组按照某个字符组合成字符串

        NSString *str2 = [arr2 componentsJoinedByString:@"."];

    }

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值