NSPredicate用于查詢和過濾
在SQL中作為查詢條件通常用WHERE予弧,但在COREDATA中作為查詢條件就可以用到NSPredicate.
NSPredicate 不單可以和COREDATA中的FetchRequest 配合使用。也可以與NSArray配合使用杀捻。
NSPredicate 中支持的關鍵詞和條件符:
>,<,>=,<=,=
比較運算符蚓庭。
如:
NSPredicate * qcondition= [NSPredicate predicateWithFormat:@"salary >= 10000"];-
字符串操作(包含):
BEGINSWITH
、ENDSWITH
拄踪、CONTAINS
如:@"employee.name BEGINSWITH[cd] '李'" //姓李的員工 @"employee.name ENDSWITH[c] '夢'" //以夢結束的員工 @"employee.name CONTAINS[d] '宗'" //包含有"宗"字的員工
注:[c]不區(qū)分大小寫[d]不區(qū)分發(fā)音符號即沒有重音符號[cd]既不區(qū)分大小寫拳魁,也不區(qū)分發(fā)音符號。
范圍:
IN
姚糊,BWTEEN
如:
@"salary BWTEEN {5000,10000}"
@"em_dept IN '開發(fā)'"自身:
SELF
,這個只針對字符數(shù)組起作用贸辈。
如:
NSArray * test = =[NSArray arrayWithObjects: @"guangzhou", @"beijing", @"shanghai", nil];
@"SELF='beijing'"通配符:
LIKE
LIKE 使用?
表示一個字符肠槽,*
表示多個字符,也可以與c
嘴拢、d
連用寂纪。
如:
@"car.name LIKE '?he?'" //四個字符中,中間為he
@"car.name LIKE '*jp'" //以jp結束正則表達式:
MATCHES
如:
NSString *regex = @"^E.+e$";//以E 開頭孝冒,以e 結尾的字符拟杉。
NSPredicate *pre= [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if([pre evaluateWithObject: @"Employee"]){
NSLog(@"matches YES");
}else{
NSLog(@"matches NO");
}邏輯運算符:
AND
、OR
啼染、NOT
如:
@"employee.name = 'john' AND employee.age = 28"占位符:
NSPredicate *preTemplate = [NSPredicate predicateWithFormat:@"name==$NAME"];
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys: @"Name1", @"NAME",nil];
NSPredicate *pre=[preTemplate predicateWithSubstitutionVariables: dic];
占位符就是字典對象里的key焕梅,因此你可以有多個占位符贞言,只要key 不一樣就可以了阀蒂。