美文网首页
使用NSPredicate对数组里面的字典元素进行过滤

使用NSPredicate对数组里面的字典元素进行过滤

作者: kikido | 来源:发表于2016-11-18 19:32 被阅读3576次

最近在做项目的时候需要对数组里面的元素进行筛选,把符合条件的字典筛选出来.

之前的话是这样子的:

NSArray *array = @[@{@"name" : @"zhangsan", @"age" : @"10"},
                           @{@"name" : @"lisi",@"age" : @"11"},
                           @{@"name" : @"wangwu",@"age" : @"12"}];
 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[c] 'zhang'"];
NSArray *results = [array filteredArrayUsingPredicate:predicate];
        
NSLog(@"筛选的结果是 == %@",results);

打印的结果是

屏幕快照 2016-11-18 19.15.27.png

所以如果知道要筛选的字段的话,还是很好实现的,但是这次的项目里面需要筛选的字段并不能确定,所以只能用一个变量去代替,我当时是这么做的


NSString *preStr = @"zhang";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ CONTAINS[c] 'zhang'",preStr];

这样子操作的话是不能筛选出结果来的,所以查了下文档,

The format string supports printf-style format specifiers such as %x (see Formatting String Objects). Two important format specifiers are %@ and %K.

  • %@ is a var arg substitution for an object value—often a string, number, or date.
  • %K is a var arg substitution for a key path.

反正就是需要使用%K(大写的K)这个占位符来代替变量,下面是替换过得代码:

NSArray *array = @[@{@"name" : @"zhangsan", @"age" : @"10"},
                           @{@"name" : @"lisi",@"age" : @"11"},
                           @{@"name" : @"wangwu",@"age" : @"12"}];
        
NSString *preStr = @"name";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K CONTAINS[c] 'n'",preStr];
NSArray *results = [array filteredArrayUsingPredicate:predicate];
        
NSLog(@"筛选的结果是 == %@",results);

打印结果:

屏幕快照 2016-11-18 19.29.34.png

ok,完美~还是要提醒一下,需要使用大写的K(%K),来当变量的占位符哈!

相关文章

  • 使用NSPredicate对数组里面的字典元素进行过滤

    最近在做项目的时候需要对数组里面的元素进行筛选,把符合条件的字典筛选出来. 之前的话是这样子的: 打印的结果是 所...

  • LeetCode每日一题:分发饼干

    思路一 先对数组g和s进行升序排序,然后再用孩子数组里面的元素去和饼干数组里面的元素比较,小于或者等于饼干元素里面...

  • lambda

    针对字典进行排序 针对数组,其每个元素为字典,按照字典的某个key进行排序

  • [OC基础]NSPredicate

    NSPredicate,用来指定过滤器条件的对象 创建 NSPredicate 对象 使用 NSPredicate...

  • iOS之NSPredicate

    使用NSPredicate对NSArray进行过滤 大家好,我是亮亮。过滤数组是经常要做的事情,最原始的方法是使用...

  • 【OC梳理】NSPredicate

    NSPredicate NSPredicate(谓词),可以根据定义的模糊查询条件,对内存对象进行过滤搜索。 基本...

  • 2021-03-05

    本地模糊查询 本文记录了在OC和Swift语言中,使用NSPredicate在本地数组里进行模糊查询 OC篇 模糊...

  • NSPredicate使用

    NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。 NSPredicate使用时...

  • RAC集合

    在RAC中可以使用RACSequence,来进行对数组以及字典的快速便利 1、RAC对字典进行遍历 对字典遍历出来...

  • swift, Array的高阶函数:filter 和 reduc

    1.filter filter: 过滤,可以对数组中的元素按照某种规则进行一次过滤。函数声明:public fun...

网友评论

      本文标题:使用NSPredicate对数组里面的字典元素进行过滤

      本文链接:https://www.haomeiwen.com/subject/zmrspttx.html