iOS迭代删除

iOS 数组遍历删除&自定义迭代器

雨燕双飞 提交于 2019-12-06 16:17:33
在iOS中,数组是无法通过 迭代器 删除的,无论是enumerateObjectsUsingBlock迭代器还是for in,抑或是NSEnumerator都无能为力,当然 for循环更不行了,对于java编程的同学来说无法接受啊。 当然办法还是有的是,不然我不会在这里费口舌。 我们主要有两种方式来删除数组,NSPredicate与while循环,但是性能稍有不同。 当然这里也会自定义迭代器删除,也是一种不错的选择 。 一.使用NSPredicate删除数组元素 1.1 NSArray全部删除 NSArray * aArr = @[@1,@"A",@2.0f,@"B",@"3",@4,@5,@"6"]; aArr = [aArr filteredArrayUsingPredicate:[NSPredicate predicateWithValue:NO]]; 1.2 NSArray选择性删除 NSArray * aArr = @[@1,@"A",@2.0f,@"B",@"3",@4,@5,@"6"]; aArr = [aArr filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary<NSString *,id> *