美文网首页iOS
iOS 之 谓词(NSPredicate)查询与过滤 全解

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

作者: 山水域 | 来源:发表于2017-07-31 17:19 被阅读70次

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)查询与过滤 全解

    NSPredicate类是用来定义逻辑条件约束的,通过定义逻辑条件进行查询与过滤。 基本语法 比较运算符 比较运算...

  • 【OC梳理】NSPredicate

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

  • NSPredicate的使用

    NSPredicate可用于检索查询,其实就是一个过滤器 iOS中的Predicate 即谓词逻辑, 和数据库的S...

  • 谓词查询

    什么是谓词查询 NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索。 可以使用谓词表示逻辑条件...

  • NSPredicate谓词-数组过滤

    NSPredicate谓词-数组过滤 NSPredicate中主要的几种运算方式 1、比较运算符: > 、< 、=...

  • iOS(NSPredicate) 谓词的使用

    参考iOS-谓词的使用详解[https://#]NSPredicate 谓词[https://#] NSPredi...

  • iOS-NSPredicate

    // 谓词的条件查询 > 、< 、==、!=NSPredicate *predicate1 = [NSPredic...

  • NSPredicate谓词过滤

    使用NSPredicate的predicateWithFormat:方法(可以跟不定参数)以一个谓词字符串来创建N...

  • 谓词(NSPredicate)

    谓词(NSPredicate) 1. 什么是谓词 The NSPredicate class is used to...

  • Swift-谓词(NSPredicate)

    NSPredicate定义逻辑条件限制数据搜索和内存中数据过滤.NSPredicate和运算符组合时谓词表达式返回...

网友评论

    本文标题:iOS 之 谓词(NSPredicate)查询与过滤 全解

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