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