数据的过滤和获取--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.字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
例:@"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