NSPredicate 中支持的關(guān)鍵詞和條件符:
1幅垮、>,<,>=,<=,= 比較運(yùn)算符。
如:
NSPredicate * qcondition= [NSPredicate predicateWithFormat:@"salary >= 10000"];
2、字符串操作(包含):BEGINSWITH、ENDSWITH、CONTAINS
如:
@"employee.name BEGINSWITH[cd] '李'" //姓李的員工
@"employee.name ENDSWITH[c] '夢(mèng)'"?? //以夢(mèng)結(jié)束的員工
@"employee.name CONTAINS[d] '宗'"?? //包含有"宗"字的員工
注:[c]不區(qū)分大小寫(xiě)[d]不區(qū)分發(fā)音符號(hào)即沒(méi)有重音符號(hào)[cd]既不區(qū)分大小寫(xiě)歼疮,也不區(qū)分發(fā)音符號(hào)。
3诈唬、范圍:IN?? 韩脏,BWTEEN
如:
@"salary BWTEEN {5000,10000}"
@"em_dept IN '開(kāi)發(fā)'"
4、自身:SELF铸磅,這個(gè)只針對(duì)字符數(shù)組起作用赡矢。
如:
NSArray * test = =[NSArray arrayWithObjects: @"guangzhou", @"beijing", @"shanghai", nil];
@"SELF='beijing'"
5、通配符:LIKE
LIKE 使用?表示一個(gè)字符阅仔,*表示多個(gè)字符吹散,也可以與c、d 連用八酒。
如:
@"car.name LIKE '?he?'" //四個(gè)字符中空民,中間為he
@"car.name LIKE '*jp'"?? //以jp結(jié)束
6、正則表達(dá)式:MATCHES
如:
NSString *regex = @"^E.+e$";//以E 開(kāi)頭羞迷,以e 結(jié)尾的字符界轩。NSPredicate *pre= [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];if([pre evaluateWithObject: @"Employee"]){NSLog(@"matches YES");
}else{NSLog(@"matches NO");
}
7、邏輯運(yùn)算符:AND闭树、OR耸棒、NOT如:
@"employee.name = 'john' AND employee.age = 28"
8、占位符:NSPredicate *preTemplate = [NSPredicate predicateWithFormat:@"name==$NAME"];NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"Name1", @"NAME",nil];NSPredicate *pre=[preTemplate predicateWithSubstitutionVariables: dic];占位符就是字典對(duì)象里的key报辱,因此你可以有多個(gè)占位符与殃,只要key 不一樣就可以了。
對(duì)數(shù)組查詢(xún):
如:
//從數(shù)組篩選聯(lián)系人列表
NSString*search =self.searchbar.text;
NSPredicate*pred = [NSPredicatepredicateWithFormat:[NSStringstringWithFormat:@"cname Like[cd] '*%@*' OR ctel1Like[cd] '*%@*' OR ctel2Like[cd] '*%@*'",search,search,search]];
NSArray*arr = [self.peopleArrfilteredArrayUsingPredicate:pred];