iOS - 谓词(NSPredicate)

什么是谓词?
  • 谓词是通过NSPredicate类,指定的逻辑条件作为约束条件,完成对数据的筛选。
  • Cocoa中提供了NSPredicate类,指定过滤器的条件,将符合条件的对象保留下来。


  • 判断是否满足条件:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<25"];
    for (Person *p in arrar) {
        BOOL result = [predicate evaluateWithObject:p];
            if (result) {
            NSLog(@"符合条件:%@",p);
    }
}


  • 对数组过滤:
//将符合条件的保留
[arrar filterUsingPredicate:predicate];
//返回新的数组
NSArray * arr = [array filteredArrayUsingPredicate:predicate];
NSLog(@"返回新的数组:%@",arr);


  • 格式占位符:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age <= %d",30];


  • 逻辑运算法:
//谓词不区分大小写&& AND || OR
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name > 'bruse' && age < %d",30];


  • IN:
//关键字 注意字符串一定要添加''
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name IN {'rose', 'bruse'}"];
//{}可以是数组
NSArray * array = @[@"1",@"2",@"3",@"4"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name IN %@",array];


  • 以**开始 -- BEGINSWITH
//检查某个字符串以「A」开头
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH ‘A’"];


  • 以**结束 -- ENDSWITH
//检查某个字符串以「Z」开头
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH ‘Z’"];


  • 模糊查找 Like
NSString * str = @"a";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like ‘*%@*’",str];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容