iOS NSArray数组过滤
2016-02-16 14:35
274 查看
需求:在一个数组里面,将在这个数组中的并且在另一个数组里面的元素过滤掉。
即:在一个数组dataArray里面,将在dataArray数组中的并且在filteredArray数组里面的元素过滤掉。
即:在一个数组dataArray里面,将在dataArray数组中的并且在filteredArray数组里面的元素过滤掉。
//iOS-筛选数组内的元素 //在dataArray中里面,将在dataArray中的并且在filteredArray数组里面的元素过滤掉 //需要去掉的元素数组 NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:@"1",@"3",@"9", nil]; //需要被筛选的数组 NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"1",@"1",@"3",@"1",@"5",@"7", nil]; /* 方法一:利用NSPredicate 注:NSPredicate所属Cocoa框架,在密码、用户名等正则判断中经常用到。 类似于SQL语句 NOT 不是 SELF 代表字符串本身 IN 范围运算符 那么NOT (SELF IN %@) 意思就是:不是这里所指定的字符串的值 */ NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",filteredArray]; //过滤数组 NSArray * reslutFilteredArray = [dataArray filteredArrayUsingPredicate:filterPredicate]; NSLog(@"Reslut Filtered Array = %@",reslutFilteredArray); /* 方法二:从后往前遍历数组,然后匹配删除 */ int i = (int)[dataArray count]-1; for(;i >= 0;i --){ //containsObject 判断元素是否存在于数组中(根据两者的内存地址判断,相同:YES 不同:NO) if([filteredArray containsObject:[dataArray objectAtIndex:i]]) { [dataArray removeObjectAtIndex:i]; } } NSLog(@"Data Array = %@",dataArray);
相关文章推荐
- iOS有三种多线程编程
- IOS开发证书显示“此证书的签发者无效”解决方法
- IOS开发证书变成“此证书的签发者无效”解决方法
- iOS中一些共存混编的问题
- 谈iOS多线程(NSThread、NSOperation、GCD)编程
- iOS archive(归档)的总结
- iOS开发问题之上架根证书过期问题
- iOS开发篇(三)iOS9无需开发者账号真机测试
- iOS 四舍五入问题
- iOS不规则控件的点击事件
- iOS多线程GCD NSThread的使用和理解
- 真机IOS8.3以上的文件夹共享
- iOS8 的定位问题
- iOS开发-文件管理
- iOS SHA1算法
- IOS关于证书显示:此证书的签发者无效
- iOS Programming Resources
- 如何成为一名入门级 iOS 开发者
- iOS - 内存管理
- 关于导入.a文件后报错Undefined symbols for architecture arm64: