数据的过滤和获取--NSPredicate

1.NSPredicate是什么

?

NSPredicate 最大的作用就是过滤数据了,它是一种数据过滤的工具类,你可以使用类似SQL的查询语句来获取符合某些条件的数据

?

2.一个例子

?

NSArray *array = [[NSArray ?alloc]initWithObjects:@"beijing",@"shanghai",@"guangzou",@"Guangzou",@"wuhan",@"wuchang",?nil];

?

NSPredicate *pred = [NSPredicatepredicateWithFormat:@"SELF CONTAINS[cd] ‘guang‘"];

?

NSArray *pred1Arr =[array filteredArrayUsingPredicate:pred];

?

?

3.基本语法

其中format后的格式,正式如同SQL语句?

? ?self是代表调用方法的对象

?

谓词

? ? 1.字符串相关:BEGINSWITHENDSWITHCONTAINS

?

? ? 例:@"name CONTAIN[cd] ‘ang‘" ? //包含某个字符串

?

? ? @"name BEGINSWITH[c] ‘sh‘" ? ? //以某个字符串开头

?

? ? @"name ENDSWITH[d] ‘ang‘"? ? ? //以某个字符串结束

BETWEEN:左边的表达式等于右边的表达式的值或者介于它们之间。右边是一个有两个指定上限和下限的数值的数列(指定顺序的数列)。比如,1 BETWEEN { 0 , 33 },

?

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

? ? 实际应用:NSArray进行过滤

?

?

2.字符串本身:SELF

?

例:@"SELF == ‘APPLE‘"

?

3.通配符:LIKE

?

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

?

@"name LIKE[cd] ‘???er*‘"

?

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

?

例:@"number >= 99"

?

4.正则表达式:MATCHES

?

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

?

@"name MATCHES %@",regex

?

实际应用:判断字符串首字母是否为字母

??5.替换

%@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 是对字符串,日期,数字等对象的替换

%K? ??某个类对象的属性,即属性键

?

?

?

4.使用范围

?

定义两个方法来验证邮箱,利用MATCHES语句

?

+(BOOL)isValidateRegularExpression:(NSString *)strDestination

? ? ? ? ? ? ? ? ? ? ? byExpression:(NSString *)strExpression

?

{

?? ?

? ? NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strExpression];

?? ?

? ? BOOL isSuccess=[predicate evaluateWithObject:strDestination];

?? ?

? ? return isSuccess;

?? ?

}

?

//验证email

+(BOOL)isValidateEmail:(NSString *)email {

? ? //jfkjkfj? @? ddvv? . com

? ? NSString *strRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{1,5}";

? ? BOOL rt = [self isValidateRegularExpression:email byExpression:strRegex];

? ? NSString *string;

?

?? ?

? ? return rt;

?? ?

}

?

?

参考文章

http://www.cocoachina.com/industry/20140321/8024.html?

时间: 2024-10-14 20:54:46

数据的过滤和获取--NSPredicate的相关文章

关于json数据的过滤、获取

json数据:book.json { "store": { "book": [ { "category": "文学", "author": "路遥", "title": "平凡的世界", "price": 8.95 }, { "category": "文学", "author&q

用 jQuery.ajaxSetup 实现对请求和响应数据的过滤

不知道同学们在做项目的过程中有没有相同的经历呢?在使用 ajax 的时候,需要对请求参数和响应数据进行过滤处理,比如你们觉得就让请求参数和响应信息就这么赤裸裸的在互联网里来回的穿梭,比如这样: 要知道,在浩瀚的互联网中,所有的信息都是不安全的,万一有人偷窥我们怎么办?!万一被别人看见了我们的美体,偷窥到了我们的私处,然后以此威胁我们,岂不是太难堪了不是?这时,你或许会想给请求数据和响应数据加密,就相当于给我们的数据穿上了一层衣服.于是我们这样: 是不是美美哒,对,穿上一层漂漂亮亮的衣服,就不怕别

SoapUI对于Json数据进行属性值获取与传递

SoapUI的Property Transfer功能可以很好地对接口请求返回的数据进行参数属性获取与传递,但对于Json数据,SoapUI会把数据格式先转换成XML格式,但实际情况却是,转换后的XML格式往往根本没法用Xpath形式获取到指定的数据了.因此只能用Script脚本形式了. {"addUsersToDirectoryResponse":{"addUserToDirectoryResponse":[{"ack":"Succes

『行式报表』通过方法对数据进行过滤

(关于Scriptcase产品,请查看 http://www.phpscriptcase.com 查看相关功能) Scriptcase提供了方便的方式直接创建行式报表,可以一键生成简单.直接的报表.Scriptcase会根据数据机构,自动判断其数据类型,并且生成相应格式的字段(如整形.字符型.图片型等等). 使用Scriptcase创建行式报表虽然方便,但是实际的工作中我们一定会遇到这样的问题: 当前用户只允许查看自己的记录: 组管理员(或者部门管理员)允许查看本组(部门)的数据,对自己的数据可

客户端表单提交数据方式与服务器获取数据

表单提交数据的两种方式 表单form的提交有两种方式,一种是get的方法,通过超级链接后面的参数提交过来,一种是post ,通过Form表单提交过来. post方式: <form id="form1" name="form1" method="post" action="login.aspx"> <table width="501" border="0" align=&

MySQL 查询语句SELECT和数据条件过滤

MySQL 查询语句SELECT ,主要是用 * 表示任意字段,也可以写id,name,content 等,数据条件过滤主要是between,and,or ,WHERE,in,like,limit,not in等. 1,查询语句SELECT的用法 select * from biao 2,查询语句数据条件的用法where 条件的开始and 并联关系or 或者的关系between 两者之间like 模糊查询limit 限制查询的条数in 在什么里面not in 不在什么里面 文章来自(www.dc

数据库系列学习(四)-数据的过滤

1.准备学习的数据库 --创建学生表 create table T_Student ( --identity表示主键自增长,从1开始,且每次加1 SId int primary key identity(1,1), SName nvarchar(10), SGender varchar(2) default('男'), SAge int ) --插入数据 --全部列名与值一一对应 insert into T_Student(SName,SGender,SAge) values('李三','男',

分析html格式数据,根据正则表达式获取所需数据,并存入数据库

例子为获取<dl>中的<dt></dt><dd></dd>中的内容,由于在<dt></dt>标签中还存在<a>标签,所有会一同举例说明.第一次做不够优化,共同学习. <!DOCTYPE html> <html> <head> <title><title> </head> <body> <dl class="hel

Android学习之 Manifest中meta-data扩展元素数据的配置与获取

在AndroidManifest.xml清单文件中 我们有时会看到如下类似的<meta-data ... >元素开始的配置内容: <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo" /> <meta-data android:name="com.g