数据的过滤和获取--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._%+-]+@[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 

posted @ 2015-06-03 21:51  何黎  阅读(352)  评论(0编辑  收藏  举报