forin 遍历进行相关操作出现的错误以及解决方案


解决相关方案:

(1)使用for循环(建议  简单 易理解)

(2)将所操作的数组用枚举进行逆序排序 (逆序的数组用枚举可以进行删除一些列操作)(建议)

(3)给原数组复制一个副本, 对副本进行相关操作

(4)查找数组元素下标,,在定义一个数组来接收其下标值,在进行相关操作

(5)查找所要删除对象,然后再存储要删除的对象,再进行相关操作

下面是几个实例:

<span style="font-size:18px;">//7.删除某个分组全部联系人
        NSLog(@"删除某个分组全部联系人:例如删除A组");
        //方法一
        //快速遍历法
        NSMutableArray *personArray2 = [NSMutableArray arrayWithArray:personArray];
        for (AddressPerson *groupName1 in personArray2) {
            if ([[groupName1 groupName] isEqualToString:@"A Group"]) {
                [personArray removeObject:groupName1];
            }
        }
        //方法二
        //用i遍历的方法
        for (int i = 0; i < [personArray count]; i++) {
            {
                AddressPerson *Person = [personArray objectAtIndex:i];
                if ([[Person groupName] isEqualToString:@"A Group"]) {
                    [personArray removeObject:Person];
                }
            }
        }
        //方法三
        //倒序打印  枚举遍历倒序可以改变数组元素的个数和顺序
        NSEnumerator *enumerator = [personArray reverseObjectEnumerator];//倒序打印
        for (AddressPerson *groupName1 in enumerator) {//forin遍历
            if ([[groupName1 groupName] isEqualToString:@"B Group"]) {
                [personArray removeObject:groupName1];
            }
        }
        //输出通讯录信息
        NSLog(@"展示通讯录中所有联系人:");
        for (AddressPerson *allPerson in personArray) {
            NSLog(@"%@", allPerson);
        }
</span>


你可能感兴趣的:(操作出现的错误,forin)