zoukankan      html  css  js  c++  java
  • NSMutableArray 删除可变数组元素

    平时使用 NSMutableArray 中经常用到遍历删除数组元素的问题。
    一般第一个想法是使用一下 forin 就解决了,但是老司机都会知道使用 forin 做删除操作的时候会 crash。
    报错的原因是:

    当数组在枚举的时候被修改了,因为数组规定在forin遍历的时候不能修改数组元素。
    但是有一种特殊情况,就是在删除数组最后一个元素的时候可以使用forin,因为到最后一个元素的时候forin枚举已经结束了,这时候删除元素不会影响到forin工作。

    NSMutableArray *nameArray = @[@"1", @"2", @"3", @"4"];
    

     使用倒序forin 删除元素

    //创建逆序遍历
    NSEnumerator *enume = [nameArray reverseObjectEnumerator]; 
    for (NSString *name in enumerator) {  
        if ([name isEqualToString:@"2"]) {  
            [array removeObject:name];  
        }  
    }
    

    使用 for 循环进行遍历删除
    遍历整个数组,找到对应的元素,然后执行删除操作 

    for (int i = 0; i < count; ++i) {
    	NSString *name = nameArray[i];
    	if ([name isEqualToString:@"2"]) {
    		nameArray removeObject:name];
    	}
    }
    

     还有一种方式是定义一个副本数组,对这个副本数组进行遍历,在原数组中进行删除操作

    NSMutableArray *copyNameArray = [NSMutableArray arrayWithArray:nameArray];
    for (NSString *name in copyNameArray) {
    	if ([name isEqualToString:@"2"]) {
    		[nameArray removeObject:name];
    	}
    }
    
  • 相关阅读:
    七、Vue Cli+ApiCloud
    六、取消eslint 校验代码
    六、匿名方法
    五、vue中export和export default的使用
    四、Vue CLI-异步请求(axios)
    接口自动化测试(7)
    selenium 封装
    flask 动手写的接口平台
    flask入门篇
    python 自动化接口测试(6)
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/11758823.html
Copyright © 2011-2022 走看看