【Foundation-10-5】#import <Foundation/NSArray.h>可变数组,操作

本文深入探讨了Swift语言中数组操作的关键方法,包括添加、修改、替换、移除和排序等,提供了实例演示和代码示例,帮助开发者更好地理解和运用数组功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




@interface NSMutableArray (NSExtendedMutableArray)

    

增加

- (void)addObjectsFromArray:(NSArray *)otherArray;

    //追加数组
    [arr1 addObjectsFromArray:arr3];


- (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes;

    arr1 = [NSMutableArray array];
    arr3 = @[@"A",@"B"];
    
    [arr1 addObject:@"1"];
    [arr1 addObject:@"2"];
    [arr1 addObject:@"3"];
    
    NSMutableIndexSet *indexset = [[NSMutableIndexSet alloc]init];
    [indexset addIndex:0];
    [indexset addIndex:2];
    
    [arr1 insertObjects:arr3 atIndexes:indexset];
    //arr1 的0位与2位,插入arr3的obj,注意是arr3 中 一个插完插第二个。(arr3 的个数要与 indexset 一样多)
    //  arr3 是 A,B
    //  第一次在0 位置插入A,第二次在新数组的基础上2位置插入B
    
    
    NSLog(@"%@",arr1);



修改

交换2个位置

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

    arr1 = [NSMutableArray array];
    
    [arr1 addObject:@"1"];
    [arr1 addObject:@"2"];
    [arr1 addObject:@"3"];
    
    [arr1 exchangeObjectAtIndex:1 withObjectAtIndex:2];

    NSLog(@"%@",arr1);


重新设置

- (void)setArray:(NSArray *)otherArray;

- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0);

    //重新设置数组,不管多少,都变arr3
    [arr1 setArray:arr3];    
    
    //设置某一个
    [arr1 setObject:@"333" atIndexedSubscript:0];


替换

- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;

- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;

- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;

</pre><pre name="code" class="objc">    [arr1 replaceObjectAtIndex:1 withObject:@"?"];
    
    NSMutableIndexSet *indexset = [[NSMutableIndexSet alloc]init];
    [indexset addIndex:0];
    [indexset addIndex:2];
    [arr1 replaceObjectsAtIndexes:indexset withObjects:@[@"A",@"B"]];
    
    [arr1 replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:@[@"A",@"B",@"C"]];
        
    [arr1 replaceObjectsInRange:NSMakeRange(0, 2) withObjectsFromArray:@[@"A",@"B",@"C"] range:NSMakeRange(2, 1)];
        
    NSLog(@"%@",arr1);
    
    




移除

- (void)removeObject:(id)anObject;

- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;

- (void)removeObject:(id)anObject inRange:(NSRange)range;

- (void)removeObjectsInArray:(NSArray *)otherArray;

- (void)removeObjectsInRange:(NSRange)range;

- (void)removeAllObjects;

    //删除 指定 obj
    [arr1 removeObject:@"1"];
    
    //删除指定位置
    [arr1 removeObjectAtIndex:1];
    
    //指定某段,删除指定 obj
    [arr1 removeObject:@"1" inRange:NSMakeRange(1, 2)];
    
    //删除与 arr3 中有的内容
    [arr1 removeObjectsInArray:arr3];
    
    //删除指定某段
    [arr1 removeObjectsInRange:NSMakeRange(1, 2)];
    
    //删光
    [arr1 removeAllObjects];
    


- (void)removeObjectIdenticalTo:(id)anObject inRange:(NSRange)range;

- (void)removeObjectIdenticalTo:(id)anObject;

- (void)removeObjectsFromIndices:(NSUInteger *)indices numIndices:(NSUInteger)cnt NS_DEPRECATED(10_0, 10_6, 2_0, 4_0);




排序

自定义排序(阿西吧)

- (void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context;

- (void)sortUsingSelector:(SEL)comparator;

//    [arr1 sortUsingFunction:(NSInteger (*)(__strong id, __strong id, void *)) context:<#(void *)#>];
    
//    arr1 sortUsingSelector:<#(SEL)#>


常用排序

- (void)sortUsingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);

- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);

   
    //常用遍历
    [arr1 sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSComparisonResult result = [obj1 compare:obj2];
        return result == NSOrderedDescending;//升序
    }];
    
    [arr1 sortWithOptions:NSSortStable usingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSComparisonResult result = [obj1 compare:obj2];
        return result == NSOrderedDescending;//升序
    }];


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值