iOS中NSPredicate的简单学习

1、常用创建方式

NSPredicate *predicate = [NSPredicate predicateWithFormat:@""];

2、Format:的格式

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

// 说明:Person类要自己写,这里就不贴代码了

 Person *p1 = [[Person alloc] initWithName:@"test1" AndAge:12];

Person *p2 = [[Person alloc] initWithName:@"test2" AndAge:23];

Person *p3 = [[Person alloc] initWithName:@"test3" AndAge:101];

Person *p4 = [[Person alloc] initWithName:@"test4" AndAge:120];

NSArray *arr = @[p1,p2,p3,p4];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age>100&&name=='test4'"];
// 注意这个语法里面字符串要用单引号

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印输出结果
NSLog(@"%@",result);

2.2 范围运算符,in(则表示在后面的{}中是否包含),between(在某个范围内,如:age between{15,25}等价于 15<=age<=25)

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age between {15,25}"];
或者
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name in {'test1','test2'}"];

2.3 对象本身self 如@"self == 'apple'"(也可以是NSNumber)

 NSArray *arr = @[@"ss",@"dddd",@"apple"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self == 'apple'"];
// 注意这个语法里面字符串要用单引号

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印输出结果:apple

2.4 字符串相关

:BEGINSWITH、ENDSWITH、CONTAINS
例:@"name CONTAINS[cd] 'ang'" //包含某个字符串
@"name BEGINSWITH[c] 'sh'" //以某个字符串开头
@"name ENDSWITH[d] 'ang'" //以某个字符串结束

NSArray *arr = @[@"yangjie",@"zhangsan",@"lisi"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains[cd] 'ng'"];

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self beginswith[c] 'y'"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self endswith[d] 'i'"];


// 注意这个语法里面字符串要用单引号

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印输出结果
NSLog(@"%@",result);

2.5通配符:LIKE

例:@"name LIKE[cd] 'er'" //代表通配符,Like也接受[cd].
@"name LIKE[cd] '???er
'"

NSArray *arr = @[@"yangjie",@"zhangsan",@"lisi",@"ang",@"tangddd",@"fangxxx"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self like[cd] 'ang*'"];
// 注意这个语法里面字符串要用单引号

NSArray *result = [arr filteredArrayUsingPredicate:predicate];
// 打印输出结果
NSLog(@"%@",result);

2.6正则表达式:MATCHES

例:NSString *regex = @"^A.+e$"; //以A开头,e结尾
@"name MATCHES %@",regex

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IOS NSPredicate 查询、搜索简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似...
    Tanyfi阅读 873评论 0 0
  • NSPredicate是什么 NSPredicate:谓词 字面翻译是这个意思,但是我觉得谓词这个词太难以理解了 ...
    Aiana阅读 1,561评论 0 1
  • 简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的...
    wylei阅读 655评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,185评论 19 139
  • 父亲话不多,尤其是和我这个儿子相处的时候,我估计全天下的父亲和儿子差不多都那样吧,做儿子的似乎也已经...
    做自己的思想家阅读 329评论 0 1