NSPredicate 谓词

本文介绍如何使用NSPredicate进行数据筛选,包括基本的比较运算符、字符串匹配方法等,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比较运算符
        /**比较运算符
         * >:大于
         * <:小于
         * >=:大于等于
         * <=:小于等于
         * =,==:等于
         * !=,<>:不等于
         * between:左边的表达式等于右边的表达式的值或者介于它们之间。右边是一个有两个指定上限和下限的数值的数列(指定顺序的数列)。比如,1 BETWEEN { 0 , 33 },或者$INPUT BETWEEN { $LOWER, $UPPER }。
 
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30];
     NSArray *array = [persons filteredArrayUsingPredicate:predicate];
 
in(包含)
 
name以a开头的
predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'a'"];
 
name以ba结尾的
predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH 'ba'"];
 
name中包含字符a的
predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"];
 
like 匹配任意多个字符
name中只要有s字符就满足条件
predicate = [NSPredicate predicateWithFormat:@"name like '*s*'"];
 
?代表一个字符,下面的查询条件是:name中第二个字符是s的
predicate = [NSPredicate predicateWithFormat:@"name like '?s'"];
 
 
1)、过滤对象是数组:使用- (void)filterUsingPredicate:(NSPredicate *)predicate; 针对可变数组进行过滤,过滤掉可变数组中不符合条件的。-(NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; 针对不可变数组进行过滤,将符合条件的元素组成一个新数组进行返回
       
2)、对单个对象进行判断过滤使用:- (BOOL)evaluateWithObject:(id)object; 向谓词对象发送该方法,参数是过滤的对象。常见于和正则表达式配合使用。
 
 
小结:以上三种方法都可以执行谓词短语,如果是对数组元素进行过滤的话,我们使用:- (void)filterUsingPredicate:(NSPredicate *)predicate、- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;更方便,如果是只针对一个对象进行判断的话,使用- (BOOL)evaluateWithObject:(id)object; 更方便。

转载于:https://www.cnblogs.com/Ager/p/4941211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值