码迷,mamicode.com
首页 > 其他好文 > 详细

数据的过滤和获取--NSPredicate

时间:2015-06-03 22:53:08      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

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._%+-]+@[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?

数据的过滤和获取--NSPredicate

标签:

原文地址:http://www.cnblogs.com/bad-heli/p/4550357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!