首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
NSPredicate 谓词总结 数组过滤 模糊匹配
时间:
2015-08-16 13:35:42
阅读:
173
评论:
0
收藏:
0
[点我收藏+]
标签:
NSPredicate 用于指定过滤条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配。
NSPredicate常用方法介绍
[objc]
view plain
copy
1.创建NSPredicate(相当于创建一个过滤条件)
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"过滤条件"];
2.判断指定的对象是否满足NSPredicate创建的过滤条件
[predicate
evaluateWithObject:person];
3.过滤出符合条件的对象(返回所有符合条件的对象)
NSArray *persons = [array
filteredArrayUsingPredicate:predicate];
实例:(以下为伪代码,只为讲解问题)
[objc]
view plain
copy
1.先创建一个person对象
@interface
Person: NSObject{
NSString *name;
int age;
}
2.创建一个数组,在数组种加入多个person对象
NSArray *array=[NSArray
arrayWithObjects:person
1,person
2,person
3,person
4,...,
nil];
3.使用NSPredicate来过滤array种的person
a.找出array种age小于
2
0的person
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"age < 20"];
for(
Person *person in array){
if([predicate
evaluateWithObject:person]){
//判断指定的对象是否满足
//........................
}
}
NSArray *persons = [array
filteredArrayUsingPredicate:predicate];
//获取所有age小于20的person
使用方法主要就这几步,以下讲一些常用的NSpredicate的条件
1.逻辑运算符号 > , < , = , >= , <= 都能使用在这里
运算符还可以跟逻辑运算符一起使用,&& , || ,AND, OR 谓词不区分大小写
[objc]
view plain
copy
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"age > 20"];
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name > ‘abc‘ && age > 10"];
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name > ‘abc‘ OR age > 10"];
[objc]
view plain
copy
<span style=
"font-family: Arial, Helvetica, sans-serif;"></span><p
class=
"p1">
</p>
2.IN
[objc]
view plain
copy
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name IN {‘abc‘ , ‘def‘ , ‘123‘}"];
3.以xx开头 --beginswith
[objc]
view plain
copy
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name BEGINSWITH ‘N‘"];
//name以N打头的person
[objc]
view plain
copy
</pre>
4.以xx结尾--endswith</div><div></div><div><pre code_snippet_id=
"163702" snippet_file_name=
"blog_20140120_8_9862346" name=
"code"
class=
"objc">
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name ENDSWITH ‘N‘"];
//name以N结尾的person
5.包含 -- contains
[objc]
view plain
copy
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name CONTAINS ‘N‘"]; <span style=
"font-family: Arial, Helvetica, sans-serif;">
//name种包含‘N的person</span>
6.模糊查询--like
[objc]
view plain
copy
NSPredicate *predicate = [NSPredicate
predicateWithFormat:
@"name LIKE ‘*N*‘"];
//<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14.44444465637207px; line-height: 26px;">*表示零个或多个字符</span>
7.以上说的都是对象种的属性匹配,如果数组种都是字符串如何匹配--self
[objc]
view plain
copy
NSArray *array=[NSArray
arrayWithObjects:
@"abc",
@"def",
@"ghi",
@"jkl",
nil
nil];
NSPredicate *pre = [NSPredicate
predicateWithFormat:
@"SELF==‘abc‘"];
NSArray *array
2 = [array
filteredArrayUsingPredicate:pre];
8.正则表达式
[objc]
view plain
copy
(
8.) 正则表达式:
NSPredicate 使用MATCHES 匹配正则表达式,正则表达式的写法采用international components
for Unicode (ICU)的正则语法。
例:
NSString *regex =
@"^A.+e$";
//以A 开头,以e 结尾的字符。
NSPredicate *pre= [NSPredicate
predicateWithFormat:
@"SELF MATCHES %@",
regex];
if([pre
evaluateWithObject:
@"Apple"]){
printf(
"YES\n");
}
else{
printf(
"NO\n");
}
备注:以上为本人浅见,如有不对之处,请各位大大们指出纠正,谢谢!!
NSPredicate 谓词总结 数组过滤 模糊匹配
标签:
原文地址:http://www.cnblogs.com/Milo-CTO/p/4734036.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!