码迷,mamicode.com
首页 > 移动开发 > 详细

IOS-筛选数组内的元素

时间:2014-12-03 17:11:44      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   os   sp   for   on   2014   log   

    //需要去掉的元素数组
    NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:@"1",@"4", nil];
    //需要被筛选的数组
    NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"1",@"4",@"6",@"1",@"1",@"4",@"1",@"6",@"4", 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);
    /*
     结果:
     Reslut Filtered Array = (
     2,
     6,
     6
     )
     */
    
    /*
     方法二:从后往前遍历数组,然后匹配删除
     */
    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);
    /*
     结果:
     Data Array = (
     2,
     6,
     6
     )
     */

IOS-筛选数组内的元素

标签:blog   io   ar   os   sp   for   on   2014   log   

原文地址:http://blog.csdn.net/like7xiaoben/article/details/41699409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!