过滤器 NSPredicate

一. NSPredicate(谓词)

A definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.
NSPredicate相当于存放一个过滤器的过滤条件,然后根据这个条件进行过滤。

二. NSPredicate使用

+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...;

以上方法的参数predicateFormat中,包含的运算符如下:

1. 比较运算符:=或==、>=、<=、!=或<>、>、<
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“SELF = 123”];
BOOL answer = [predicate evaluateWithObject:@"是否包含123"];
// 返回的结果是YES
2. 逻辑运算符:AND或&&、OR或||、NOT或!
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“SELF > 2 && SELF < 8”];
BOOL answer = [predicate evaluateWithObject:@"9"];
// 返回的结果是NO
3. 字符串比较运算符

BEGINSWITH:是否以指定的字符串开头

SELF BEGINSWITH “a”
SELF BEGINSWITH[cd] “café”

ENDSWITH:是否以指定的字符串结尾
CONTAINS:是否包含指定的字符串
LIKE:是否匹配指定字符串模板

SELF LIKE ‘ab’ (包含)
SELF LIKE ‘?ab’ (第2、3个字符为ab)

MATCHES:是否匹配指定的正则表达式(正则表达式的执行效率最低,但功能强大,最为常用)

ENDSWITH举例:

    // 获取temp目录下的所有文件路径
    NSArray *allfilesPaths = [fileManager contentsOfDirectoryAtPath:NSTemporaryDirectory() error:nil];
    // 取得所有后缀是caf的文件
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self ENDSWITH .caf"];
    NSArray *allAudioPaths = [allfilesPaths filteredArrayUsingPredicate:predicate];
    // 结果allAudioPaths中,得到所有后缀为.caf的文件

ps:[c]忽略大小写[d]忽略重音符号[cd]忽略大小写和重音符号

4. 集合运算符

ANY、SOME:任意一个元素满足条件,返回YES
ALL:所有元素都满足条件,返回YES
NONE:没有任何元素满足条件,返回YES
IN:等价SQL中的IN运算符,当右边内容包含左边时,返回YES

//  数组过滤掉另外一个数组的所有数据
NSPredicate *predicate = [NSPredicate predicateWithFormat:@“NOT(SELF IN %@)”,array];
[source filteredArrayUsingPredicate:predicate];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值