iOS 之 谓词(NSPredicate)查询与过滤 全解

NSPredicate类是用来定义逻辑条件约束的,通过定义逻辑条件进行查询与过滤。

基本语法

比较运算符

比较运算符 > < == >= <= !=

    // 比较运算符 > , < , == , >= , <= , !=
    // 运算符还可以跟逻辑运算符一起使用,&&  ,  || ,AND, OR 谓词不区分大小写
     
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age == %ld" ,[text integerValue]];

范围运算符(不区分大小写)

范围运算符:IN BETWEEN

 //范围运算符:IN、BETWEEN
     
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age in{ 40, 50}" ,[text integerValue]]; //age == 40 age == 50
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN{ 40, 50}" ,[text integerValue]]; // 40 <= age <= 50

字符串本身符

一般通过谓词(NSPredicate)验证正则表达式时使用
字符串本身:SELF

//字符串本身:SELF
     NSArray *array=[NSArray arrayWithObjects: @"abc", @"def", @"ghi",@"jkl", nil nil];
     NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF=='abc'"];
     NSArray *array2 = [array filteredArrayUsingPredicate:pre];

过滤字符

过滤字符相关:BEGINSWITH 以···开始、ENDSWITH 以···结尾、CONTAINS 包含

 //字符串相关:BEGINSWITH 以···开始、ENDSWITH 以···结尾、CONTAINS 包含
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@" ,text];

注:[c] 不区分大小写 [d] 不区分发音符号即没有重音符号 [cd] 既不区分大小写,也不区分发音符号。

模糊过滤字符

通配符:LIKE
*代表通配符Like还接受[cd] ? 只匹配一个字符并且还可以接受[cd].

 //通配符:LIKE  *代表通配符Like还接受[cd]  ?只匹配一个字符并且还可以接受[cd].
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self LIKE '?z'"];
     self.predicateArr = [[NSArray arrayWithObjects:@"az", @"zzz", @"zaa", @"arw", nil] filteredArrayUsingPredicate:predicate];

正则表达式

正则表达式:MATCHES

 正则表达式:MATCHES
     NSString *phoneRegex = @"^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\\d{8}$";
     NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
     //判断指定的对象是否满足NSPredicate创建的过滤条件
     [phoneTest evaluateWithObject:@"手机字符串"];

代码示例

    //创建NSPredicate(相当于创建一个过滤条件)
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@" ,text];
    
    //过滤出符合条件的对象(返回所有符合条件的对象)
    self.predicateArr = [self.mutArr filteredArrayUsingPredicate:predicate];

代码下载

你可能感兴趣的:(iOS 之 谓词(NSPredicate)查询与过滤 全解)