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];
    	}
    }
    
  • 相关阅读:
    Django学习日记04_模板_overview
    Python并发实践_01_线程与进程初探
    web自动化测试笔记(二)
    web自动化测试笔记(一)
    app版本升级的测试点
    移动测(APP)试与web端测试的区别
    Dubbo服务器与普通服务器的区别
    java的错误分类
    安卓手机与iOS手机的区别
    在webstorm里使用git
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/11758823.html
Copyright © 2011-2022 走看看